《剑指offer》删除链表中重复的节点
生活随笔
收集整理的這篇文章主要介紹了
《剑指offer》删除链表中重复的节点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:在一個排序的鏈表中,存在重復的結點,請刪除該鏈表中重復的結點,重復的結點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理后為 1->2->5
解析:思想是用集合list存儲所有沒有重復的元素,然后構造單鏈表返回就好了。
/*public class ListNode {int val;ListNode next = null;ListNode(int val) {this.val = val;} } */ import java.util.ArrayList; import java.util.List; public class Solution {public ListNode deleteDuplication(ListNode pHead){ListNode head=pHead;List<Integer> list = new ArrayList<>();//需要構造的單鏈表List<Integer> removed = new ArrayList<>();//記錄移除過的值Object obj=null;while (head!=null){if(!list.contains(head.val)&&(!removed.contains(head.val))){list.add(head.val);}else {obj=head.val;list.remove(obj);//list移除的對象,需要轉為Object對象再移除removed.add(head.val);}head=head.next;}if(list.size()==0){//有可能移除后就沒有節點了,例如2->2->2,移除后list為空了return null;}pHead = new ListNode(list.get(0));for(int i=list.size()-1;i>=1;i--){//頭插法創建單鏈表ListNode node = new ListNode(list.get(i));node.next=pHead.next;pHead.next=node;}return pHead;} }總結
以上是生活随笔為你收集整理的《剑指offer》删除链表中重复的节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016校招腾讯研发岗笔试题---递归法
- 下一篇: 《剑指offer》二叉树的下一个节点