設快慢指標,每次分別走兩步,一步。當快遍歷結束時,慢指標走了一半。慢指標走的過程中反轉鍊錶,最後比較前後兩段鍊錶。
執行注釋的**,fast = fast.next.next;
會報空指標異常
為什麼?只是順序不一樣而已
/**
* definition for singly-linked list.
* public class listnode
* }*/class
solution
listnode fast = head;
listnode slow = head;
listnode cur = null;
listnode tail = null;
while
(fast != null && fast.next != null)
listnode c1 = cur;
listnode c2 = fast == null ? slow : slow.next;
while
(c2 != null)
c1 = c1.next;
c2 = c2.next;
}return
true;}
}
搞明白了,cur = slow; 意味著cur,slow指向同乙個結點,當對cur操作,slow也就改變了,在cur = slow; 之後,應該緊接著更新slow,slow = slow.next;這樣就不會影響到slow。
我覺得下面這段**,也就是反轉鍊錶的**本質是向頭插入結點來實現翻轉鍊錶。
cur = slow;
//把slow指向的結點作為新的頭結點
slow = slow.next;
cur.next = tail;
//新頭結點的後繼是前面的tail
tail = cur;
LeetCode 2 括號生成
vectorgenerateparenthesis int n n表示還需要加上多少對括號 rightnum表示還可以加上多少對右括號 void generateparentesiscore int n,int rightnum,int index,char p,vector ret if n 0 ...
leetcode(2) 整數反轉
對應leetcode第7道題目。給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 請根據這個假設,如果反轉後整數溢位那麼就返回 0。官方的解題思路為彈出和推入。python實現思路 當輸入的是負數...
Leetcode 題解 雙指標
雙指標 有序陣列 字串翻轉 環形鍊錶問題 雙指標主要用於遍歷陣列,兩個指標指向不同的元素,從而協同完成任務。有序陣列的 two sum1 leetcode 167.two sum ii input array is sorted easy input numbers target 9 output ...