LeetCode83-除排序链表中的重复元素
最近全国疫情严重,待在家里没事干,马上又要准备春招了,最近刷刷题,记录一下!再说一句,武汉加油,大家出门记得戴口罩!
1、题目
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
2、思路
分两种情况去写代码。
情况一:如果下一个节点的值和当前节点的值相同,则删除下一个节点
情况二:如果下一个几点的值和当前节点的值不同,则指针移到下一个节点。
3、代码
c++
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
auto cur=head;
while(cur)
{
//下一个节点的值和当前节点的值相同,则删除下一个节点
if(cur->next&&cur->val==cur->next->val)
{
cur->next=cur->next->next;
}
//下一个几点的值和当前节点的值不同,则指针移到下一个节点。
else cur=cur->next;
}
return head;
}
};
Java
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode cur=head;
while(cur!=null)
{
//下一个节点的值和当前节点的值相同,则删除下一个节点
if(cur.next!=null&&cur.val==cur.next.val)
{
cur.next=cur.next.next;
}
//下一个几点的值和当前节点的值不同,则指针移到下一个节点。
else cur=cur.next;
}
return head;
}
}