leetCode-Remove Duplicates from Sorted Array II
来源:互联网 发布:无印良品文具淘宝 编辑:程序博客网 时间:2024/06/02 18:26
Description:
Follow up for “Remove Duplicates”:
What if duplicates are allowed at most twice?
For example,
Given sorted array nums = [1,1,1,2,2,3],
Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn’t matter what you leave beyond the new length.
My Solution:
//保留一个指针frontSave,如果nums[i] == frontsave,则count++,如果count > 2,//则将nums[i]之后的所有元素往前移一位,同时减少len,如果nums[i] != frontsave,则//将count置为1,同时将frontsave置为nums[i]class Solution { public int removeDuplicates(int[] nums) { int len = nums.length; if(len <= 2){ return len; } int i = 1; int count = 1; int frontSave = nums[0]; while(i < len){ if(nums[i] == frontSave){ count++; if(count > 2){ moveForward(nums,i); len--; }else{ i++; } }else{ frontSave = nums[i]; count = 1; i++; } } return len; } void moveForward(int[] nums,int index){ for(int i = index;i < nums.length - 1;i++){ nums[i] = nums[i + 1]; } }}
Better Solution:
//首先初始化一个指针i,i指向去重之后的'新数组',迭代nums,将前两个元素放入新数组且i右//移,当新数组个数大于2时,每放入一个元素之前先判断此元素是否大于nums[i - 2],若大 于,则放入新数组,i右移,否则,n等于nums[i - 2](由于数组已排序),需要去重,忽略即可。class Solution { public int removeDuplicates(int[] nums) { int i = 0; for (int n : nums) if (i < 2 || n > nums[i - 2]) nums[i++] = n; return i;}}
阅读全文
0 0
- LeetCode: Remove Duplicates from Sorted Array II
- [Leetcode] Remove Duplicates from Sorted Array II
- LeetCode: Remove Duplicates from Sorted Array II
- [Leetcode] Remove Duplicates from Sorted Array II
- [LeetCode] Remove Duplicates from Sorted Array II
- [leetcode] Remove Duplicates from Sorted Array II
- [LeetCode]Remove Duplicates from Sorted Array II
- [leetcode]Remove Duplicates from Sorted Array II
- LeetCode-Remove Duplicates from Sorted Array II
- [leetcode] Remove Duplicates from Sorted Array II
- LeetCode - Remove Duplicates from Sorted Array II
- LeetCode:Remove Duplicates from Sorted Array II
- LeetCode | Remove Duplicates from Sorted Array II
- Leetcode: Remove Duplicates from Sorted Array II
- 【leetcode】Remove Duplicates from Sorted Array II
- Leetcode: Remove Duplicates from Sorted Array II
- [LeetCode] Remove Duplicates from Sorted Array II
- Leetcode Remove Duplicates from Sorted Array II
- [NOI2010]超级钢琴(可持续化线段树)
- C 语言大量重复使用 if else 时,大概率执行的执行体是放在 if 中还是 else 中对执行效率的影响
- Win32 API消息函数:PostMessage
- 数据结构 查找 散列表(Hash)(1)
- (浅谈)Java反射机制的使用
- leetCode-Remove Duplicates from Sorted Array II
- 使用 CSS 去掉 iPhone 网页上按钮的超大圆角以及文本框圆角默认样式
- EOJ 2536 求和
- Commands out of sync; you can't run this command now
- 参考
- java设计模式----创建型
- python学习三--列表
- Pytorch Transfer learning
- 计算圆的面积和周长