【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.

思路很简单,由于乖乖的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;
	}

}
时间: 2024-11-07 06:51:22

【Leetcode】Remove Duplicates from Sorted List in JAVA的相关文章

【LeetCode】Remove Duplicates from Sorted Array 解题报告

[LeetCode]Remove Duplicates from Sorted Array 解题报告 标签(空格分隔): LeetCode [LeetCode] https://leetcode.com/problems/remove-duplicates-from-sorted-array/ Total Accepted: 129010 Total Submissions: 384622 Difficulty: Easy Question Given a sorted array, remov

【leetcode】Remove Duplicates from sorted array

Remove Duplicates from sorted array 问题描述 Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant me

【leetcode】 Remove Duplicates from Sorted List

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. 给出一个已排序链表,删除所有重复的元素使每一个节点值只出现一次 思路: 1. 定义pCurNode,pNextNode两个

【leetcode】Remove Duplicates from Sorted List (easy)

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. 思路: 简单题,没什么好说的. class Solution { public: ListNode *deleteDupl

【LeetCode】Remove Duplicates from Sorted List

题意: 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. 思路: 删除链表中的重复项,考察链表操作. 主要是用循环判断当前节点和下一级节点的值是否相同,是则修改当前节点

【leetcode】Remove Duplicates from Sorted List II (middle)

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.

【Leetcode】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.

【Leetcode】Remove Duplicates from Sorted Array II

题目:对上一题的延伸,每个数字可以出去2次. 思路:还是设置两个下标.第一个lenxb标记已去重的地方,第二个i标记待处理的位置.每次比较时,比较lenxb和lenxb-1两个位置,如果都相等,说明出现超过两次了:否则满足要求. 注意:通过上面的思路可知,特判情况是长度小于等于2时. PS:提交后16ms,在此题的提交时间第一队列最前位置.Yes! 代码: class Solution { public: int removeDuplicates(vector<int>& nums)

【leetcode】Remove Duplicates from Sorted List II-很精简

觉着自己写的比看到的答案精简,分享一下: class Solution { public: ListNode *deleteDuplicates(ListNode *head) { if(head == NULL) return NULL; ListNode res(-1); ListNode* pre = &res; pre->next = head; bool flag = true; while(head != NULL){ if(head->next == NULL || he