19. Reverse Linked List II
6476 ワード
道しるべ
インデックスm(左)からn(右)を逆順に並べ替えます.インデックスmは1から始まる.
左、右が左<=右の場合は、左と右を逆順に並べて逆順リストに戻ります.
左が2,右が5と仮定して解く.
startは変更が必要な2の前の点1を指し、endはstartを指す.next in 2として指定します.
headは1で、その前にルートを作成し、headの前に配置します. 後根.nextを最終結果に戻します.
startとendを基準に、次のように繰り返し、逆順序で反転します.
2)開始は繰り返し行われる部分である.
start.nextをtmp,startとして指定します.次はend次になる.
end.次はendnext.次は前の値を引き寄せます.そして始まります.next.tmpとしてnextを指定します. 、すなわち、前のstart.導入nextノードと同じです.
左右を繰り返すと、最終結果は5)回.
最後はroot車に戻ればnextでいいです.
複数の割当て
解 も同様の結果を得ることができ,以下に示す.
最後の値をエンタープライズに保存する場合
値を無視したい場合
変数、関数名に特殊な意味や機能を付与する場合.
国際化、ローカリゼーション関数を使用する場合
数値テキスト値を区切る桁数の区切り記号として使用します.
インデックスm(左)からn(右)を逆順に並べ替えます.インデックスmは1から始まる.
左、右が左<=右の場合は、左と右を逆順に並べて逆順リストに戻ります.
1.重複構造を使用してノードを反転
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def reverseBetween(self, head: ListNode, left: int, right: int) -> ListNode:
#예외처리
if not head or left == right:
return head
root = start = ListNode(None)
root.next = head
#start, end 지정
for _ in range(left - 1):
start = start.next
end = start.next
#반복하면서 노드 차례대로 뒤집기
for _ in range(right - left):
tmp, start.next, end.next = start.next, end.next, end.next.next
start.next.next = tmp
return root.next
左が2,右が5と仮定して解く.
startは変更が必要な2の前の点1を指し、endはstartを指す.next in 2として指定します.
headは1で、その前にルートを作成し、headの前に配置します.
startとendを基準に、次のように繰り返し、逆順序で反転します.
2)開始は繰り返し行われる部分である.
start.nextをtmp,startとして指定します.次はend次になる.
end.次はendnext.次は前の値を引き寄せます.そして始まります.next.tmpとしてnextを指定します.
左右を繰り返すと、最終結果は5)回.
最後はroot車に戻ればnextでいいです.
複数の割当て
解
for _ in range(right - left):
tmp = start.next
start.next = end.next
end.next = end.next.next
start.next.next = tmp
✔アンダー()
最後の値をエンタープライズに保存する場合
値を無視したい場合
変数、関数名に特殊な意味や機能を付与する場合.
国際化、ローカリゼーション関数を使用する場合
数値テキスト値を区切る桁数の区切り記号として使用します.
Reference
この問題について(19. Reverse Linked List II), 我々は、より多くの情報をここで見つけました https://velog.io/@corone_hi/19.-Reverse-Linked-List-IIテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol