题解 | #删除链表中重复的结点#
删除链表中重复的结点
https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef
思路:排除相同元素的思路,双指针法。因为是排序的,先是遇到两个相同的node(if),然后将所有相同的node排除(while)。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode deleteDuplication(ListNode pHead) {
//空链表
if (pHead == null) {
return null;
}
//在链表前加一个表头
ListNode temp = new ListNode(0);
temp.next = pHead;
ListNode cur = temp;
while (cur.next != null && cur.next.next != null) {
//遇到两个相邻节点的值相同
if (cur.next.val == cur.next.next.val) {
int tempVal = cur.next.val;
//将所有相同的都跳过
while (cur.next != null && cur.next.val == tempVal) {
cur.next = cur.next.next;
}
} else {
cur = cur.next;
}
}
return temp.next;
}
}
剑指offer刷题总结 文章被收录于专栏
本专栏是本人刷剑指offer的记录总结,也欢迎大家评论区留言讨论交流~
