存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。
示例 1:
输入:head = [1,1,2]
输出:[1,2]
示例 2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]
注意:
1.开头的 head == null 判断
2.为什么返回是 head : head只是用来标记这个链表的头节点地址,cur循环之后发生的修改,这个链表也就发生了修改。返回head也就是返回这个链表了。如果你用head去移动,之后你会找不到这个头节点的地址。cur也相当于head的temp。简而言之,返回 head 就相当于返回了整个链表。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null){
return head;
}
ListNode temp = head;
//循环到倒数第二个
while(temp.next != null){
//检查倒数第二个
// if (temp.next.next == null){
// if (temp.next.val == temp.val){
// temp.next = null;
// break;
// }
// }
if (temp.val == temp.next.val){
temp.next = temp.next.next;
}else {
temp = temp.next;
}
}
return head;
}
}