当前位置: 代码迷 >> 综合 >> leetcode83. Remove Duplicates from Sorted List(删除有序链表中的重复项)
  详细解决方案

leetcode83. Remove Duplicates from Sorted List(删除有序链表中的重复项)

热度:66   发布时间:2023-11-17 01:24:19.0

题目要求

给定一个排好顺序的链表,删除链表中的重复项。

例子

Example 1:

Input: 1->1->2
Output: 1->2

Example 2:

Input: 1->1->2->3->3
Output: 1->2->3

解题思路

和解决有序数组中删除重复元素leetcode 26 有序数删除组中的重复元素的思路相似,通过遍历比较链表中相邻元素的值,若重复,则当前元素的next指向下一节点的next.
(p->next = p->next->next) 理解起来是这样
在操作中,因为要删除并释放重复节点,所以也需要一个指针(nex)来存放记录重复节点的位置,即nex = p->next。

主要代码c++

class Solution {
    
public:ListNode* deleteDuplicates(ListNode* head) {
    ListNode *cur =head, *nex;while(cur && cur->next) // 链表为空,或者里那表末尾时结束(避免再写if判断空表){
    if(cur->val == cur->next->val) // 比较相邻元素的值{
    nex = cur->next;delete cur->next; //很多解答直接跳到下一节点,而不释放节点cur->next = nex->next;}else{
    cur = cur->next;}}return head; }
};

原题链接 :https://leetcode.com/problems/remove-duplicates-from-sorted-list/

  相关解决方案