Problem:
Given a sorted linked list, delete all duplicates such that each element appear only once.
Explanation:
给定一个排序后的列表,将其重复元素删除,即每个元素只出现一遍。
My Thinking:
- 建立一个布尔型数组用于保存元素出现的情况,如元素2出现过,则a[2]=true,问题在于数组长度有限,数字不能太大或负数。
- 由于是排好序的,因此后一个元素只要和前一个元素相等(后一定大于前一个),就说明后一个元素是重复的,时间复杂度为O(n)。
My Solution:
(2)
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode cur=head;
while(cur!=null && cur.next!=null){
if(cur.val==cur.next.val)
cur.next=cur.next.next;
else
cur=cur.next;
}
return head;
}
}
Optimum Thinking:
同my thinking(2)
Optimum Solution:
同my solution(2)