zoukankan      html  css  js  c++  java
  • 【Leetcode】Remove Duplicates from Sorted List in JAVA

    Given a sorted linked list, delete all duplicates such that each element appear only once.

    For example,
    Given 1->1->2, return 1->2.

    Given 1->1->2->3->3, return 1->2->3.

    思路非常easy。因为乖乖的sort好了,就是推断下一个是不是比它大就好了,假设大,那么跳过下一个直接link到下一个的下一个。可是此时注意。考虑假设是1->1->1这样的情况。当你把第二个1删掉之后。指针一定要保留在第一个的位置,这样才干够接着推断这个1与再下一个1是不是相等(即第一个1和第3个1)。

    唯一须要格外注意的情况就是最后两个,因为你要p.next=p.next.next来删除,所以对于最后两个不存在next的next。所以直接等于null就好啦

    package testAndfun;
    
    
    public class deleteDuplicates {
    	public static void main(String args[]){
    		deleteDuplicates dp = new deleteDuplicates();
    		ListNode head  = new ListNode(3);
    		ListNode p1 = new ListNode(3);
    		head.next=p1;
    		ListNode p2  = new ListNode(3);
    		p1.next =  p2;
    		ListNode p3 = new ListNode(3);
    		p2.next = p3;
    		ListNode p4 = new ListNode(13);
    		p3.next = p4;
    		prinf(head);
    		prinf(dp.deleteDup(head));
    	}
    	
    	private static void prinf(ListNode input){
    		while(input!=null)	{
    			System.out.print(input.val+"->");
    			input = input.next;
    		}
    		System.out.println();
    	}
    	
    	public ListNode deleteDup(ListNode head){
    		if(head==null||head.next==null)	return head;//if no head, what should I do?
    		ListNode p=head;
    		int i=0;
    		//System.out.println(p.val+" and "+p.next.val);
    		while(p.next != null){
    			if(p.val==p.next.val&&p.next.next!=null)	{
    				//System.out.println("go first"+p.val);//"^^"+p.next.val+"%%"+p.next.next.val);
    				p.next=p.next.next;
    				continue;//if this and next equal, we should stay in this in case next.next is equal this
    			}
    			else if(p.val==p.next.val&&p.next.next==null)	{
    				//System.out.println("go second"+p.val);
    				p.next=null;
    				continue;
    			}
    			//System.out.println(p.val+" round "+i++);
    			p=p.next;
    			if(p==null)	break;
    		}
    		//System.out.print(head.val);
    		return head;
    	}
    
    }
    


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    Python常见的几种算法
    Python的八种数据类型
    网络协议
    Python基本知识
    Python简介
    Windows10 java环境配置
    linux 为动态分配的Virtualbox虚拟硬盘扩容
    ubuntu 18.04.1安装hadoop3.1.2
    linux 安装virtualbox5.2
    这是写给我自己看的!!
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4802976.html
Copyright © 2011-2022 走看看