Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1:
Input: 1->1->2
Output: 1->2
Example 2:
Input: 1->1->2->3->3
Output: 1->2->3
思路一:利用上一题一样的思路,只是把m向后移一位
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode newHead = new ListNode(0);
newHead.next = head;
ListNode m = newHead;
ListNode n = m.next;
while(m.next != null&& n.next != null){
if(m.next.val == m.next.next.val){
n = n.next;
while(n.next!= null && n.val == n.next.val){
n = n.next;
}
m.next.next = n.next;
}
else{
m = m.next;
n = n.next;
}
}
return newHead.next;
}
}
上面一种方法稍微有些麻烦 脱裤子放屁, 本题的正解应该是
思路很简单,逐一比较相邻两个节点的值,当遇到相同的值时,就将后一个节点从链表中移去:
不然就像后移一位
ListNode newHead = head;
while(head != null && head.next != null){
if(head!= null && head.next != null){
if(head.val == head.next.val){
head.next = head.next.next;
}
else{
head = head.next;
}
}
}
return newHead;```