当前位置:   article > 正文

JZ76 删除链表中重复的结点(较难)_jz76 删除链表中重复的结点 c++

jz76 删除链表中重复的结点 c++

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5  处理后为 1->2->5

数据范围:链表长度满足1<=n<=1000  ,链表中的值满足 

进阶:空间复杂度 O(N) ,时间复杂度 O(N)

例如输入{1,2,3,3,4,4,5}时,对应的输出为{1,2,5}:

解:

  1. /*
  2. public class ListNode {
  3. int val;
  4. ListNode next = null;
  5. ListNode(int val) {
  6. this.val = val;
  7. }
  8. }
  9. */
  10. public class Solution {
  11. public ListNode deleteDuplication(ListNode pHead) {
  12. ListNode tempNode = new ListNode(-1);
  13. ListNode tail = tempNode;
  14. while (pHead != null){
  15. if (pHead.next == null || pHead.val != pHead.next.val){
  16. tail.next = pHead;
  17. tail = pHead;
  18. }
  19. while (pHead.next != null && pHead.val == pHead.next.val){
  20. pHead = pHead.next;
  21. }
  22. pHead = pHead.next;
  23. }
  24. tail.next = null;
  25. return tempNode.next;
  26. }
  27. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/983615
推荐阅读
相关标签
  

闽ICP备14008679号