删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
题解
ListNode* deleteDuplicates(ListNode* head) {
if(head==NULL||head->next==NULL) return head;//若头节点为空没有操作直接返回 若头节点的下一个节点为空则说明肯定没有重复元素也不用操作直接返回
ListNode *pre=head;//将头节点保存 便于最后直接返回遍历后的整个链表头节点
while(pre&&pre->next){//当当前所判断的两个节点都不为空时
if(pre->next->val==pre->val) { //若两个节点值相等 则掠过重复的那个2元素
ListNode *del=pre->next;//从内存中清除被掠过的重复元素
pre->next=pre->next->next;
delete del;
}else{
pre=pre->next;//若不相等则进行下一个元素的判断
}
}
return head;
}
题目时考的对链表的操作,思路不难,但是自己所理解掌握的关于链表的知识很少,所以上来就需要去看题解才能做,相信通过一点一滴的积累最后自己再碰到同类型考点的题目可以独立做出来。