• 剑指offer-删除链表中的重复结点


    题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

    ac代码:

     1 /*
     2  public class ListNode {
     3     int val;
     4     ListNode next = null;
     5 
     6     ListNode(int val) {
     7         this.val = val;
     8     }
     9 }
    10 */
    11 import java.util.ArrayList;
    12 import java.util.Arrays;
    13 import java.util.HashMap;
    14 import java.util.Map;
    15 public class Solution {
    16     public ListNode deleteDuplication(ListNode pHead)
    17     {
    18                   ListNode p=pHead;
    19         Map<Integer,Integer>map=new HashMap<Integer,Integer>();
    20         ArrayList<ListNode>list=new ArrayList<ListNode>();
    21         while(p!=null){
    22             if(map.containsKey(p.val)){
    23                 map.put(p.val,map.get(p.val)+1);
    24             }else{
    25                 map.put(p.val,1);
    26                 
    27             }
    28             list.add(p);
    29             p=p.next;
    30         }
    31         for(int i=0;i<list.size();i++){
    32             p=list.get(i);
    33             if(map.get(p.val)>1){
    34                 for(int j=0;j<map.get(p.val);j++){
    35                     list.remove(i);
    36                 }
    37                 i--;
    38             }
    39         }
    40         for(int i=0;i<list.size()-1;i++){
    41             p=list.get(i);
    42             p.next=list.get(i+1);
    43         }
    44         if(list.size()!=0){
    45         list.get(list.size()-1).next=null;
    46         return list.get(0);
    47         }else
    48             return null;
    49     }
    50 }
  • 相关阅读:
    CF732 F Tourist Reform——边双连通分量
    CF36 E Two Paths——欧拉(回)路
    最小生成树()
    Bellman-Ford算法
    SPFA算法
    归并排序(Merge_Sort)
    并查集
    int(3)与int(11)的区别
    mysql应该看的blog
    mysql建立索引
  • 原文地址:https://www.cnblogs.com/llsq/p/8809886.html
Copyright © 2020-2023  润新知