• Remove Duplicates from Sorted List II


    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

    For example,
    Given 1->2->3->3->4->4->5, return 1->2->5.
    Given 1->1->1->2->3, return 2->3.

    Solution: 指针操作。

    如果当前val和下一个val相等,则将per指针一直移到和这些val不等的位置。

    如果当前val和下一个不等, 则这个val要保存。 那么 先将cur.next = per;  cur = cur.next; per = per.next; 注意还要让cur.next = null;这样才保证了不会加上些不需要的元素,同时 这个句子只能放在最后。

     1 /**
     2  * Definition for singly-linked list.
     3  * public class ListNode {
     4  *     int val;
     5  *     ListNode next;
     6  *     ListNode(int x) {
     7  *         val = x;
     8  *         next = null;
     9  *     }
    10  * }
    11  */
    12 public class Solution {
    13     public ListNode deleteDuplicates(ListNode head) {
    14         // IMPORTANT: Please reset any member data you declared, as
    15         // the same Solution instance will be reused for each test case.
    16         ListNode header = new ListNode(-1);
    17         header.next = null;
    18         ListNode cur = header, per = head;
    19         while(per != null){
    20             if(per.next == null || per.val != per.next.val){
    21                 cur.next = per;
    22                 cur = cur.next;
    23                 per = per.next;
    24                 cur.next = null;
    25             }else{
    26                 int value = per.val;
    27                 while(per != null && per.val == value){
    28                     per = per.next;
    29                 }
    30             }
    31         }
    32         return header.next;
    33     }
    34 }
  • 相关阅读:
    applycationContext.xml文件配置信息
    原生json的异步操作
    解析xm文件
    druid(德鲁伊)连接池的DataSourceUtils的写法及原生写法
    MYSQL的JDBCUtils的写法
    模拟服务器
    关于函数式接口
    浅谈树和二叉树
    &和&&的区别
    全排列问题(c语言实现)
  • 原文地址:https://www.cnblogs.com/reynold-lei/p/3420628.html
Copyright © 2020-2023  润新知