Pythonのソートされた二重リンクリストで特定の製品とのペアを検索します
したがって、入力がL =1⇔2⇔4⇔5⇔6⇔8⇔9で、x =8の場合、出力は(1、8)、(2、4)
になります。これを解決するには、次の手順に従います-
-
curr:=ヘッド、nxt:=ヘッド
-
nxt.nextはNoneではなく、ゼロ以外ですが、実行してください
-
nxt:=nxt.next
-
-
見つかった:=False
-
currとnxtはnullではなく、currとnxtは異なり、nxt.nextはcurrではありませんが、実行してください
-
(curr.data * nxt.data)がxと同じ場合、
-
見つかった:=True
-
ペアcurr.data、nxt.data
を表示します -
curr:=curr.next
-
nxt:=nxt.prev
-
-
それ以外の場合
-
if(curr.data * nxt.data)
-
curr:=curr.next
-
-
それ以外の場合
-
nxt:=nxt.prev
-
-
-
-
見つかった場合がFalseの場合、
-
「見つかりません」と表示します
-
例
理解を深めるために、次の実装を見てみましょう-
class ListNode:
def __init__(self, data):
self.data = data
self.prev = None
self.next = None
def insert(head, data):
node = ListNode(0)
node.data = data
node.next = node.prev = None
if (head == None):
(head) = node
else :
node.next = head
head.prev = node
head = node
return head
def get_pair_prod(head, x):
curr = head
nxt = head
while (nxt.next != None):
nxt = nxt.next
found = False
while (curr != None and nxt != None and curr != nxt and nxt.next != curr) :
if ((curr.data * nxt.data) == x) :
found = True
print("(", curr.data, ", ", nxt.data, ")")
curr = curr.next
nxt = nxt.prev
else :
if ((curr.data * nxt.data) < x):
curr = curr.next
else:
nxt = nxt.prev
if (found == False):
print( "Not found")
head = None
head = insert(head, 9)
head = insert(head, 8)
head = insert(head, 6)
head = insert(head, 5)
head = insert(head, 4)
head = insert(head, 2)
head = insert(head, 1)
x = 8
get_pair_prod(head, x) 入力
head = None head = insert(head, 9) head = insert(head, 8) head = insert(head, 6) head = insert(head, 5) head = insert(head, 4) head = insert(head, 2) head = insert(head, 1) x = 8
出力
( 1 , 8 ) ( 2 , 4 )
-
ソートされた二重リンクリスト内のトリプレットをカウントします。このリストの積は、C++で指定された値xに等しくなります。
整数値を含むソートされた二重リンクリストが与えられます。目標は、積が与えられた値xに等しいトリプレットを見つけることです。入力リンクリストが3−4−1−2で、xが6の場合、カウントは1になります(トリプレット(3,1,2)) 例 入力 linked list: [ 200−4−16−5−10−10−2 ] x=200 出力 Count of triplets in a sorted doubly linked list whose product is equal to a given value x are:
-
リンクリストがPythonの特定のバイナリツリーに存在するかどうかを確認するプログラム
ルートノード「root」を持つバイナリツリーと、ヘッドノード「head」を持つリンクリストが与えられたとします。そのリンクリストがその二分木に存在するかどうかを調べる必要があります。ツリー内のノードのセットがリンクリストとして順番に相互にリンクしている場合、およびその順序が提供されたリンクリストの順序と類似している場合は、「True」を返します。それ以外の場合は、「False」を返します。 したがって、入力が次のような場合 ツリー リンクリスト その場合、出力はTrueになります。 これを解決するには、次の手順に従います- arr:=新しいリスト size:=arrのサ