特殊なリスト:Nの最後から二番目のノードにリンクされたリストのチェーン回転+ Leetcode 61にリストLeetcode 19 + Leetcode 24二十から二スイッチングノードを削除します

特殊なリスト:Nの最後から二番目のノードにリンクされたリストのチェーン回転+ Leetcode 61にリストLeetcode 19 + Leetcode 24二十から二スイッチングノードを削除します

Nノードのリストを削除する逆数Leetcode 19

タイトル説明

ヘッドノードリストにリスト、n個のノードの削除リストの逆数とリターンを考えます。

例:

给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.

説明:

Nは、効果的な確保するために与えられています。

高度:

あなたはそれを達成するために、1つのパスを使用しようとすることができますか?

問題の解決策

興奮するとして、我々は最後に実行します。直接この高度な要求に対処します。

我々は、2つのノードが必要です。==ヘッドノードから出発;位置+ Nのノードを開始最初からノード。==次に、第2のノードは、時間の終わりに達した場合、ノードのヘッドノードの下の場所を削除することです。そして、削除位置が簡単にこの問題を解決することができます国境を議論のポイントです追加します。

状況のこれらのタイプは、境界点にあります。

  1. ノードが削除されたときに、ヘッドノード
  2. 削除されたノードがエンド・ノードであります

このような全体の機能:

class Solution(object):
    def removeNthFromEnd(self, head, n):
        front = head
        second = None
        count = 0
        flag = 0
        while front:
            if front.next:
                front = front.next
                count = count + 1
                if count > n-1:
                    if flag == 0:
                        second = head
                        flag = 1
                    else:
                        second = second.next
            else:
                break
        if second == None:
            res = head.next
            head = None
            return res
        else:
            if second.next:
                temp = second.next.next
                second.next = temp
                temp = None
            else:
                second.next = None
        return head

業績

実行すると:16ミリ秒

メモリ消費量:11.7メガバイト

ここに画像を挿入説明

リンクされたリスト内のLeetcode 24二十から二スイッチングノード

タイトル説明

隣接ノードとのリストのペアごとの交換を考えると、交換にリストを返します。

あなたは、単に内部ノード値を変更しますが、実際のノード交換する必要がないことができます。

例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

問題の解決策

ない任意の特定の方法は、一つのノードのみまたは終了トラバーサルの後がない場合は、後続ノード、為替への2つの間、再び先頭からトラバースすることです。次のように全体のプロセスは次のとおりです。

class Solution(object):
    def swapPairs(self, head):
        if not head:
            return head
        cur1 = head
        cur2 = head.next
        if not cur2:
            return head
        while True:
            if cur1 == head:
                cur1.next = cur2.next
                cur2.next = cur1
                head = cur2
            else:
                if not cur1.next:
                    break
                else:
                    if not cur1.next.next:
                        break
                    else:
                        temp1 = cur1.next
                        temp2 = cur1.next.next
                        temp1.next = temp2.next
                        cur1.next = temp2
                        temp2.next = temp1
                        cur1 = temp1
        return head

業績

ここに画像を挿入説明

Leetcode 61回転チェーン

タイトル説明

リスト、回転のリスト、右側にノードリストの各k個の位置によって与えられ、前記kは非負です。

例1:

输入: 1->2->3->4->5->NULL, k = 2
输出: 4->5->1->2->3->NULL
解释:
向右旋转 1 步: 5->1->2->3->4->NULL
向右旋转 2 步: 4->5->1->2->3->NULL

例2:

输入: 0->1->2->NULL, k = 4
输出: 2->0->1->NULL
解释:
向右旋转 1 步: 2->0->1->NULL
向右旋转 2 步: 1->2->0->NULL
向右旋转 3 步: 0->1->2->NULL
向右旋转 4 步: 2->0->1->NULL

問題の解決策

実際には、そう従順ではない、彼は何回かは、我々はリスト全体の長さを見つけることができれば、数回動かして移動すると、ちょうど移動 K  モッド  リットル E n個 リットル s t ) \テキスト{MOD} LEN(リスト) その上に。

まず、一緒になって環へのリストの最後に最初の接続端部(連結鎖長を決定することができる場合)、次いでヘッドノードは、歩行を開始します l e n ( l i s t ) ( k  mod  l e n ( l i s t ) ) LEN(リスト) - (K \テキスト{MOD} lenは(リスト)) ステップ、点が新ヘッドノードは、ここではこのように先にリストの末端に接続され、既に鎖として(その上に、このノードの出力が切断されA)。

コードは以下の通りであります:

class Solution(object):
    def rotateRight(self, head, k):
        if (not head) | (k == 0):
            return head
        elif not head.next:
            return head
        cur = head
        length = 1
        while cur.next:
            cur = cur.next
            length = length + 1
        cur.next = head
        k = k % length
        if k == 0:
            cur.next = None
            return head
        cur = head
        for i in range(1, length - k):
            cur = cur.next
        head = cur.next
        cur.next = None
        return head

業績

実行時間:24ミリ秒

メモリ消費量:11.9メガバイト

ここに画像を挿入説明

公開された12元の記事 ウォンの賞賛6 ビュー592

おすすめ

転載: blog.csdn.net/weixin_44618103/article/details/104234987