首页 > 代码库 > [leetcode] 13. Remove Duplicates from Sorted List
[leetcode] 13. Remove Duplicates from Sorted List
这个题目其实不难的,主要是我C++的水平太差了,链表那里绊了好久,但是又不像用python,所以还是强行上了。
题目如下:
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given
1->1->2
, return1->2
.Given
1->1->2->3->3
, return1->2->3
.
思路很简单,拿到链表后依次遍历,遇到next->val == val;就把next的节点删掉就行。然后就看C++的操作了。
题解如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode *deleteDuplicates(ListNode *head) { ListNode *aspros = head; ListNode *deferos = NULL; if (aspros != NULL) { while (aspros->next) { int nextVal = aspros->next->val; while (aspros->val != nextVal && aspros->next->next) { deferos = aspros; aspros = aspros->next; nextVal = aspros->next->val; } if (aspros->val == nextVal) { if (deferos == NULL) { head = aspros->next; } else { deferos->next = aspros->next; } } else { // 这里是正常链表删完所有重复节点后的出口 return head; } aspros = aspros->next; } // 这里处理只给入一个值的链表的情况 return head; } else { // 这里处理给入空链表的情况 return head; } }};
[leetcode] 13. Remove Duplicates from Sorted List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。