删除排序链表中的重复元素
题解(java)
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode current = head;
while(current != null && current.next != null){
if(current.next.val == current.val){
current.next = current.next.next;
}else{
current = current.next;
}
}
return head;
}
}
方法
遍历进行比较
详解
- 因为这是删除排序链表中的重复元素,所以不用担心乱序问题,即重复元素都在相邻的节点中
- 其中 head 指头结点,current 负责具体操作。如果直接用头结点进行操作,head 当前的地址值将会改变,导致再返回链表时无法找到头结点而无法返回链表。
【如果结果返回值不是链表时,可以直接使用头结点进行操作,但不建议这么做】 - 遍历终止条件:当前及下一个结点都不为空时
【为了使代码逻辑更加严谨,最好加上对当前节点的判断】 - 判断时,判断的使元素的值,移动的是节点的指针。
【1>.当前结点的元素值和下一个结点的元素值相同时,删除当前元素的下一个结点;
2>.不同时,顺移 current 再进行判断】
难点
- 读题:注意是 ¥排序¥ 链表。
声明
- 原作者:E.L.E
- <未经允许不得转载使用,欢迎大家评论>