本文主要是介绍删除有序数组中的重复项Ⅱ--------题解报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
题解:
与Ⅰ不同的是这次题目要求,使得出现次数超过两次的元素只出现两次,所以我用了一个比较粗糙的双指针。
变量k去计数,作为判断是否要删除元素的依据;
同时使用变量r当作返回的数组长度,并且可以当作判断是否超出循环范围的依据,防止死循环。
代码:
public int removeDuplicates2(int[] nums) {int sum=0,r= nums.length;boolean a = false;for(int i=0;i< nums.length;){if(a)break;int j=i,k=1;while(j< nums.length&&nums[j]==nums[i])//判断是否相等{
// System.out.println("k="+k+" i="+i+" j="+j);
// for(int p=0;p<nums.length;p++)
// {
// System.out.print(nums[p]+" ");
// }
// System.out.println();if(j>=r) {//超出循环范围a=true;break;}if(k>2)//删除数组元素{r--;int m=nums[j];for(int p=j;p+1<nums.length;p++){nums[p]=nums[p+1];}nums[nums.length-1]=m;//sum++;j--;}j++;k++;}i=j;}
// System.out.println(r);return r;}
这篇关于删除有序数组中的重复项Ⅱ--------题解报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!