数组中相同的数

怎甘沉沦 提交于 2020-02-25 19:32:00

给定一个升序数组1,元素有重复,对每个元素算一下平方后得到新的数组2,
问数组2中不相同的元素共有多少个?给出算法和空间复杂度,要求尽量优化
时间复杂度为O(n)空间复杂度为O(1)

public int repeat(int[] num) {
		int left=0;
		int right=num.length-1;
		int count=0;
		//先判断本身的重复项,然后再判断对称重复项
		while(left<right) {
			while(left+1<=right&&num[left]==num[left+1]) {
				count++;
				left++;
			}
			while(right-1>=left&&num[right]==num[right-1]) {
				count++;
				right--;
			}
			if(left<right) {
				int x=num[left];
				int y=num[right];
				if(x+y==0) {
					count++;
					left++;
					right--;
				}else if(x+y<0) {
					left++;
				}else {
					right--;
				}
			}
		}
		return count;
	}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!