83. Remove Duplicates from Sorted List
刪除LinkedList中相同的node。
基礎(chǔ)鏈表題已卸,但是要對(duì)鏈表理解透徹!!
思路:
建一個(gè)同樣大小的二維數(shù)組氓轰,存(0,0)->當(dāng)前點(diǎn)的最小和庞呕。
JAVA 2ms Solution 的一種解法
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null || head.next == null) return head;
ListNode cur = head;
while(cur!=null){
ListNode nex = cur;
while(nex.next != null && nex.val == nex.next.val){ //思考為什么不能是cur.next != null
nex = nex.next;
}
cur.next = nex.next;//Must have!
cur = nex.next;
}
return head;
}
}
Java 2ms 解法一
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null) return head;
for(ListNode pre = head, cur = head.next; cur != null; cur = pre.next){
if(pre.val == cur.val){
pre.next = cur.next;//Important step!
}else{
pre = cur;
}
}
return head;
}
}