[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;
    }
}


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

相关文章推荐

【LeetCode-面试算法经典-Java实现】【026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)】

【026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a...

LeetCode – Remove Duplicates from Sorted Array II (Java)

Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For example, G...
  • whywhom
  • whywhom
  • 2014年05月21日 08:16
  • 387

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

【LeetCode】Remove Duplicates from Sorted Array 解题报告标签(空格分隔): LeetCode[LeetCode]https://leetcode.com/p...

leetcode笔记:Remove Duplicates from Sorted Array

从题目中可知,数组中的元素事先已经过排序,因此一个简单而易于实现的方法是从第二个元素开始对数组元素进行遍历,并判断该元素是否和前面的元素相同。题目要求返回不重复的元素的个数。算法的一个要求是:返回的数...

LeetCode_Easy心得:26. Remove Duplicates from Sorted Array(C语言)

26. Remove Duplicates from Sorted Array
  • hhhhhyb
  • hhhhhyb
  • 2017年07月28日 22:03
  • 89

LeetCode080 Remove Duplicates from Sorted Array II

详细见:leetcode.com/problems/remove-duplicates-from-sorted-array-ii Java Solution: github packa...
  • zxwtry
  • zxwtry
  • 2017年04月19日 22:11
  • 76

LeetCode笔记:26. Remove Duplicates from Sorted Array

固定内存下删除有序数组中重复的数字

LeetCode Remove Duplicates from Sorted Array 移除有序数列的重复元素

Given a sorted array, remove the duplicates in place such that each element appear only once and ret...

leetcode:数组:Remove Duplicates from Sorted Array

leetcode:数组之Remove Duplicates from Sorted Array 去除有序数组中重复的元素,例如a=[1,1,2,3];输出a=[1,2,3],返回数组长度。 c++实现...

LeetCode | Remove Duplicates from Sorted Array II(删除重复的元素2)

Remove Duplicates from Sorted Array II
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[LeetCode][Java] Remove Duplicates from Sorted Array
举报原因:
原因补充:

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