题目描述:
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
中文理解:给定一个按照节点值排序好的链表,去除链表中重复的节点。
解题思路:使用ArrayList来储存节点中的不同的值的节点,然后遍历节点,去除相同值的节点。注意最后一个节点的next设置为null。
代码(java):
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null || head.next==null)return head;
ArrayList<ListNode> lst=new ArrayList<ListNode>();
ListNode p=head;
while(p!=null){
if(lst.isEmpty()){
lst.add(p);
}
else{
if(p.val!=lst.get(lst.size()-1).val){
lst.add(p);
}
}
p=p.next;
}
ListNode res=new ListNode(0);
ListNode cur=res;
for(ListNode val : lst){
cur.next=val;
cur=cur.next;
}
cur.next=null;
return res.next;
}
}