leetcode 80.删除有序数组中的重复项
题目给你一个有序数组nums请你原地删除重复出现的元素使得出现次数超过两次的元素只出现两次返回删除后数组的新长度。不要使用额外的数组空间你必须在原地 修改输入数组并在使用 O(1) 额外空间的条件下完成。使用思想栈左边区域我们把它当作栈来用只通过栈顶stackSize来操作右边区域还是普通数组用索引i来遍历代码注释版class Solution { public int removeDuplicates(int[] nums) { int stackSize 2;//表示栈中有两个元素 //从第三个元素开始遍历 for(int i2;inums.length;i){ // 只要当前数栈中倒二个元素就让当前数进栈因为前面肯定没有超过两个重复的 if(nums[i]!nums[stackSize-2]){ nums[stackSize]nums[i];//赋值后自增统计栈中元素个数 } //如果相等直接跳过-不许进栈 } // 栈中元素个数就是满足题意的最终数组长度 return stackSize; } }代码纯享版class Solution { public int removeDuplicates(int[] nums) { int stackSize 2; for(int i2;inums.length;i){ if(nums[i]!nums[stackSize-2]){ nums[stackSize]nums[i]; } } return stackSize; } }