83. Remove Duplicates from Sorted List
删除LinkedList中相同的node。
基础链表题,但是要对链表理解透彻!!
思路:
建一个同样大小的二维数组,存(0,0)->当前点的最小和。
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;
}
}