码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode_26题——Remove Duplicates from Sorted Array (string)

时间:2015-04-26 17:59:54      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

Remove Duplicates from Sorted Array

 Total Accepted: 57887 Total Submissions: 183534My Submissions

 

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 A = [1,1,2],

Your function should return length = 2, and A is now [1,2].

 

Hide Tags
 Array Two Pointers
Have you met this question in a real interview? 
Yes
 
No
 

Discuss

     开始的想法比较直接,就是从第二个开始,若发现与前面的相同,则从这一个开始依次将后面的数据复制给前面的数据,发现提交代码后超时间了,说明这种的时间复杂度太大了,不是好的算法。

#include<iostream>

using namespace std;

int removeDuplicates(int A[], int n) {

	if(n==1)
		return 1;
	if(n==2)
	{
		if(A[0]==A[1])
			return 1;
		else
			return 2;
	}

	for(int i=0;i<n-2;i++)
	{
		if(A[i+1]==A[i])
		{
			for(int j=i+1;j<=n-2;j++)
			{
				A[j]=A[j+1];
			}
		}
	}

	int len=1;
	for(int i=0;i<n;i++)
	{
		if(A[i+1]!=A[i])
			len++;
		else
			break;
	}
	return len;
	
}
int main()
{
	int A[7]={1,2,3,3,4,5,6};
	cout<<removeDuplicates(A,7)<<endl;
	int n=removeDuplicates(A,7);
	for(int i=0;i<n;i++)
		cout<<A[i]<<endl;

}

  上面的算法显然时间复杂度太高了,是不行的,所以得想更巧妙点的法子,设置两个指针i和j,j是从前往后遍历,若遇到与前面不同的则将j坐标的A[j]给前面A[i+1],然后将i+1,即前面的指针才往后移一位,这样依次往后,到最后的时候,i+1的值即为数组后来结果的大小

 

#include<iostream>

using namespace std;

int removeDuplicates(int A[], int n) {

	if(n==0)
		return 0;
	if(n==1)
		return 1;
	int i=0;
	int j=1;

	while(j<n)
	{
		if(A[j]>A[j-1])
		{
			if(j!=(i+1))
				A[i+1]=A[j];
			i++;
			j++;
		}
		else
			j++;
	}
	return i+1;
}
int main()
{
	int A[2]={1,1};
	cout<<removeDuplicates(A,2)<<endl;
	int n=removeDuplicates(A,2);
	for(int i=0;i<n;i++)
		cout<<A[i]<<endl;

}

  

 

leetcode_26题——Remove Duplicates from Sorted Array (string)

标签:

原文地址:http://www.cnblogs.com/yanliang12138/p/4457954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!