[LeetCode][Java] Remove Duplicates from Sorted Array

原创 2015年07月10日 20:27:26

题目:

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

For example,
Given input array nums = [1,1,2],

Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length.

题意:

给定一个排序数组,删除数组中的重复元素使得数组中的每个元素都只出现一次,返回数组新的长度。

不要为新的数组分配空间,你必须使用常数空间。

比如:

给定输入数组 nums = [1,1,2],

你所写的函数需要返回长度2,数组中的两个元素分别为1 and 2。数组中的超过这个长度的元素无关紧要。 

算法分析:

利用双指针

 * 前后两个指针,前指针固定不动,后指针去搜索
 * 直到后指针指到与前指针不同的元素上,这时统计到了第二个不同元素,i++;
 * 前指针重置到现在后指针的位置
 * 重复上述过程,能够统计出不同的元素的总个数,而且原数组中的前i个元素即为这i个互为不同的元素

AC代码:

/**
 * 前后两个指针,前指针固定不动,后指针去搜索
 * 直到后指针指到与前指针不同的元素上,这时统计到了第二个不同元素,i++;
 * 前指针重置到现在后指针的位置
 * 重复上述过程,能够统计出不同的元素的总个数,而且原数组中的前i个元素即为这i个互为不同的元素
 */ 
public class Solution 
{
    public int removeDuplicates(int[] nums) 
    {
		if(nums.length==0) return 0;
		int startindex = 0;
		int endindex = 0;
		int i=0;
    	while(endindex<nums.length)
    	{
    		while(endindex<nums.length)
    		{
    			if(nums[startindex]==nums[endindex]) 
    				endindex++;
    			else
    			{
    				break;
    			}   
    		}
    		nums[i]= nums[startindex];
			startindex=endindex;
			i++;
    	}
		return i;
    }
}


版权声明:本文为博主原创文章,转载注明出处

Remove Duplicates from Sorted Array——移除排序数组中重复元素

Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place such tha...
  • suibianshen2012
  • suibianshen2012
  • 2016年08月17日 23:09
  • 241

Leetcode全数组问题

目录 1、编号2 Median of Two Sorted Arrays There are two sorted arrays A and B of size m and n respe...
  • wangxiaojun911
  • wangxiaojun911
  • 2014年02月06日 03:32
  • 6363

Remove Duplicates from Sorted List II 移除重复元素和其本身(重重)

题目: 点击打开链接 解答: 设置一个flag标志 代表当前元素是否是重复元素 如果是重复元素 在...
  • skyoceanlover
  • skyoceanlover
  • 2014年08月29日 20:49
  • 282

Remove Duplicates from Sorted List(去除有序链表中的重复元素)

Given a sorted linked list, delete all duplicates such that each element appear only once.(给定一个有序链表,...
  • ajiangfan
  • ajiangfan
  • 2016年10月12日 11:17
  • 247

Remove Duplicates from Sorted Array基本处理方法和集中优质解法解析

今天做了LeetCode的习题26,题目的目的是将排好序的序列中的重复元素去掉。 这道题的目的就是在排好序的数组中删除重复元素。判断元素是否重复不会太难,因为数组是排好序的,难的是如何对重复元素进行操...
  • yinyanting1
  • yinyanting1
  • 2017年02月22日 10:11
  • 157

Remove Duplicates from Sorted Array II 从有序数组里移除重复出现元素,最多重复出现2次 @LeetCode

这是一类典型的题,思路是,一开始可以再开一个辅助数组,这样会更直观一些。如果新数组改变不会影响原数组,则可以合并起来,如本题。 package Level2; import java.util...
  • hellobinfeng
  • hellobinfeng
  • 2013年10月20日 12:55
  • 4291

CareerCup之2.1无序链表删除重复元素

【题目】 原文: 2.1 Write code to remove duplicates from an unsorted linked list. FOLLOW UP H...
  • SunnyYoona
  • SunnyYoona
  • 2014年05月18日 17:08
  • 1933

【LeetCode-面试算法经典-Java实现】【217-Contains Duplicate(包含重复元素)】

【217-Contains Duplicate(包含重复元素)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wang-Jun-C...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月28日 07:00
  • 2705

【LeetCode-面试算法经典-Java实现】【189-Rotate Array(旋转数组)】

【189-Rotate Array(旋转数组)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Rotate an array of n elements to the r...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月24日 07:13
  • 3023

Leetcode全树类问题

Leetcode全树类问题。算法总的来说就是递归(Stack, DFS)和广度优先(Queue, BFS)两种。下面有关二叉树类linked list的题目,若不加特别说明......
  • wangxiaojun911
  • wangxiaojun911
  • 2014年02月04日 03:03
  • 8659
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[LeetCode][Java] Remove Duplicates from Sorted Array
举报原因:
原因补充:

(最多只允许输入30个字)