北京华诚传媒有限公司官方网站,视频直播app下载,手机设计网,长沙自适应网站制作10多分钟的时间就把一道中等题目做出来了#xff0c;而且我还没有思考#xff0c;边写边想。我的思路很简单#xff0c;就是按照题目意思#xff0c;从前往后遍历数组并统计相同的个数count#xff0c;然后一直维护一个左指针#xff0c;把遍历的数移到左指针上然后左指针… 10多分钟的时间就把一道中等题目做出来了而且我还没有思考边写边想。我的思路很简单就是按照题目意思从前往后遍历数组并统计相同的个数count然后一直维护一个左指针把遍历的数移到左指针上然后左指针向右移动然后根据count的个数分情况处理如果count小于2就把nums[i]移动到left上如果count2不用做任何事情如果不同count改为1并把nums[i]放入left最后返回left即可。
class Solution {public int removeDuplicates(int[] nums) {int n nums.length;int left 1;int count 1;for(int i1;in;i){if(nums[i]nums[i-1]){count;if(count2){nums[left]nums[i];}}else{count1;nums[left]nums[i];}}return left;}
}
看了一下题解题解的做法也差不多他是没有去统计数字的个数而是直接和上上个保存的元素相比若相同则不能再保存若不同则保存。
class Solution {public int removeDuplicates(int[] nums) {int n nums.length;if (n 2) {return n;}int slow 2, fast 2;while (fast n) {if (nums[slow - 2] ! nums[fast]) {nums[slow] nums[fast];slow;}fast;}return slow;}
}