做题的关键在画图
一 、删除排序链表中的重复元素(83)
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode cur=head;
if(head==null){
return null;
}
while(cur.next!=null){ 循环条件根据循环体中cur.next.next得出这里
if(cur.val==cur.next.val){ cur.next不为空
cur.next=cur.next.next; 如果值相等就删除cur.next节点
}else{
cur=cur.next; 如果不相等往后遍历
}
}
return head;
}
}
二、删除排序链表中的重复元素 II(力82)
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode newHead= new ListNode();
ListNode temp=newHead;
ListNode cur=head;
if(head==null){
return head;
}
while(cur!=null){
if(cur.next!=null&&cur.val==cur.next.val){
while(cur.next!=null&&cur.val==cur.next.val){
cur=cur.next; 走到这一步就相当于走到了最后一个重复节点的位置
}
cur=cur.next; 跳出循环之后还需要再走一步到达下一个不重复的
}else { 节点
temp.next=cur; 如果是首次出现的节点
temp=temp.next;
cur=cur.next;
}
}
temp.next=null; 不要忘记链表结尾置为null
return newHead.next;
}
}
图画的不好,大家将就一下
|