您的位置:首页 > 其它

83. Remove Duplicates from Sorted List

2015-04-18 12:03 260 查看
题目:

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
.

链接: http://leetcode.com/problems/remove-duplicates-from-sorted-list/

题解:

单链表去重复。 node.next.val与当前node.val相同时移动node.next,不同则移动当前node。 Time Complexity - O(n),Space Complexity - O(1)。

public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null || head.next == null)
return head;
ListNode node = head;

while(node.next != null){
if(node.next.val == node.val)
node.next = node.next.next;
else
node = node.next;
}

return head;
}
}


二刷:

方法和一刷一样。

Java:

Time Complexity - O(n),Space Complexity - 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 node = head;
while (node != null && node.next != null) {
if (node.val == node.next.val) {
node.next = node.next.next;
} else {
node = node.next;
}
}
return head;
}
}


三刷:

Java:

/**
* 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 node = head;

while (node != null && node.next != null) {
if (node.val == node.next.val) {
node.next = node.next.next;
} else {
node = node.next;
}
}
return head;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: