Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1:
Input: 1->1->2
Output: 1->2
Example 2:
Input: 1->1->2->3->3
Output: 1->2->3
複製代碼
給定一個已排序的鏈表,刪除全部重複項,使每一個元素只出現一次。 示例1: 輸入:1 - > 1 - > 2 輸出:1 - > 2 示例2: 輸入:1 - > 1 - > 2 - > 3 - > 3 輸出:1 - > 2 - > 3bash
本題思路很簡單,因爲鏈表是有序的,說明若是有重複的,確定是下一個,按照順序進行遍歷,若是遇到當前節點和後一個節點相同,那麼覆蓋當前節點。遍歷一次就搞定了app
按照咱們的思路來編輯,代碼以下ui
public ListNode deleteDuplicates(ListNode head) {
if (head == null) {
return head;
}
ListNode temp = head;
while (head.next != null) {
if (head.val == head.next.val) {
head.next = head.next.next;
continue;
}
head = head.next;
}
return temp;
}
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
複製代碼
時間複雜度: 該方案用了循環m因此f(n)=(n)=n;因此O(f(n))=O(n),即T(n)=O(n)spa
空間複雜度: 該方案使用了沒有使用額外空間,因此空間複雜度是O(n)=O(1);翻譯
本題的大體解法如上所訴,本題大體只有一種解題方式,直接遍歷讀取覆蓋便可,我是經過當前節點和下一個節點進行比較,也能夠和前一個節點進行比較 。code