Pythonでサイズkのグループによってリンクリストを逆にするプログラム
単一リンクリストがあり、別の値kがあるとすると、ノードのk個の連続するグループごとに逆にする必要があります。
したがって、入力がList =[1,2,3,4,5,6,7,8,9,10]、k =3の場合、出力は[3、2、1、6、5 、4、9、8、7、10、]
これを解決するには、次の手順に従います-
- tmp:=値が0の新しいノード
- tmpの次:=ノード
- prev:=null、curr:=null
- lp:=temp、lc:=curr
- cnt:=k
- currがnullでない場合は、
- prev:=null
- cnt> 0でcurrがnullでない場合は、
- 次の:=次のcurr
- 次のcurr:=prev
- prev:=curr、curr:=follow
- cnt:=cnt-1
- lpの次:=prev、lcの次:=curr
- lp:=lc、lc:=curr
- cnt:=k
- tmpの次を返す
理解を深めるために、次の実装を見てみましょう-
例
class ListNode: def __init__(self, data, next = None): self.val = data self.next = next def make_list(elements): head = ListNode(elements[0]) for element in elements[1:]: ptr = head while ptr.next: ptr = ptr.next ptr.next = ListNode(element) return head def print_list(head): ptr = head print('[', end = "") while ptr: print(ptr.val, end = ", ") ptr = ptr.next print(']') class Solution: def solve(self, node, k): tmp = ListNode(0) tmp.next = node prev, curr = None, node lp, lc = tmp, curr cnt = k while curr: prev = None while cnt > 0 and curr: following = curr.next curr.next = prev prev, curr = curr, following cnt -= 1 lp.next, lc.next = prev, curr lp, lc = lc, curr cnt = k return tmp.next ob = Solution() head = make_list([1,2,3,4,5,6,7,8,9,10]) print_list(ob.solve(head, 3))
入力
[1,2,3,4,5,6,7,8,9,10], 3
出力
[3, 2, 1, 6, 5, 4, 9, 8, 7, 10, ]
-
文中の各単語を逆にするPythonプログラム?
ここでは、Python組み込み関数を使用します。まず、文を単語のリストに分割します。次に、各単語を逆にして新しいリストを作成します。ここでは、Pythonリスト内包法を使用し、最後に新しい単語リストを結合して、新しい文を作成します。 例 Input :: PYTHON PROGRAM Output :: NOHTYP MARGORP アルゴリズム Step 1 : input a sentence. And store this in a variable s. Step 2 : Then splitting the sentence into a list of words. w
-
与えられたサイズのグループで配列を逆にするPythonプログラム?
=1の場合、配列内のすべての要素を逆にします。 アルゴリズム Revarray(A,n,p) /* A is an integer Array, n is the size of an array and every sub-array of size p starting from the beginning of the array and reverse it.*/ Step 1: i is the loop control variable which is initialized by 0. Step 2: using while loop check i is less than