【Leetcode】 83. Remove Duplicates from Sorted List 【两个指针】
来源:互联网 发布:sql server 2005 端口 编辑:程序博客网 时间:2024/05/16 01:38
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.
这道题的要求是在有序链表中删除有重复数字的节点,使其只出现1次。
思路就是找到重复元素,删除即可。循环检测,如果两个连续节点的数字一样,删除一个重复的元素。
时间复杂度:O(n)
空间复杂度:O(1)
代码:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode deleteDuplicates(ListNode head) { if(head == null || head.next == null) return head; ListNode begin = head; ListNode curr = head.next; ListNode last = head; while( curr != null ){ if(last.val == curr.val){ last.next = curr.next; curr.next = null; curr = last.next; } else{ last = curr; curr = curr.next; } } return begin; }}
注意:while循环的写法
另一种做法:(并没有卵用,除了能记录一下重复的次数,再删掉)
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode deleteDuplicates(ListNode head) { if(head == null || head.next == null) return head; int step = 0 ; ListNode begin = head ; ListNode curr = head.next; ListNode last = head; while(curr != null){ if(curr.val == last.val){ step ++; curr = curr.next; if(curr == null){ if(step != 0){ last.next = curr; } } } else{ if(step == 0){ last = curr; curr = curr.next; } else if(step != 0){ last.next = curr; last = curr; curr = curr.next; step = 0 ; } } } return begin; }}
0 0
- 【Leetcode】 83. Remove Duplicates from Sorted List 【两个指针】
- [LeetCode]83.Remove Duplicates from Sorted List
- [Leetcode] 83. Remove Duplicates from Sorted List
- LeetCode --- 83. Remove Duplicates from Sorted List
- [leetcode] 83.Remove Duplicates from Sorted List
- LeetCode 83. Remove Duplicates from Sorted List
- 【leetcode】83. Remove Duplicates from Sorted List
- 83. Remove Duplicates from Sorted List LeetCode
- leetcode 83. Remove Duplicates from Sorted List
- [LeetCode]83. Remove Duplicates from Sorted List
- 【LeetCode】83. Remove Duplicates from Sorted List
- LeetCode 83. Remove Duplicates from Sorted List
- [leetcode] 83. Remove Duplicates from Sorted List
- leetcode 83. Remove Duplicates from Sorted List
- LeetCode *** 83. Remove Duplicates from Sorted List
- LeetCode - 83. Remove Duplicates from Sorted List
- 【LeetCode】83. Remove Duplicates from Sorted List
- LeetCode 83. Remove Duplicates from Sorted List
- [LeetCode] 24. Swap Nodes in Pairs
- Git常见错误
- 35 第一个只出现一次的字符
- PAT乙级.1012. 数字分类 (20)
- 无向图最小割
- 【Leetcode】 83. Remove Duplicates from Sorted List 【两个指针】
- python的多线程基础设施
- HDU 2448 Mining Station on the Sea(floyd+KM)
- java网络编程
- 206. Reverse Linked List
- git快速入门(一)git环境配置
- Java个人理解之时间的使用
- LeetCode进阶之路(4Sum)
- 野指针与野指针的避免