leetcode_middle_73_80. Remove Duplicates from Sorted Array II
来源:互联网 发布:数据分析论坛推荐 编辑:程序博客网 时间:2024/06/09 14:06
题意:
给一个有序数组,对于其中每种数字,如果多于两个,则去除多于两个的部分,并返回新数组的长度。
分析:
从旧数组到新数组,第一想法就是遍历旧数组(一个指针),生成新数组,一个指针。
那么,什么时候新数组的指针移动呢?(即放入新数组)应该是当旧数组的相邻数值不同的时候。
一种数字,只有一个:放这个进入新数组
一种数字,只有两个:放这两个进入新数组
一种数字多于两个,多于的就不放了,但要确认已经放入了两个。
现在的问题是,如何判断是哪种情况:我们先尝试合并转化以上三种情况:当一种数字少于等于两个的时候,就全部放入。
那么放入条件:同一种数字有一个或两个,就放入一个或两个。
换言之:只要不是同一种数字出现第三次,前面的出现多少就放多少。
所以再思考放入条件:当一个数字出现第三次及以上的时候不放入,其它时候放入。
现在,问题转化:什么时候知道数字出现第三次呢?=》当新数组已经有两个的时候。
所以:只要不是第三个相同的就放入。
public class Solution { public int removeDuplicates(int[] nums) { int j = 0; for (int i=0; i<nums.length; i++) if (j < 2 || nums[i] != nums[j-2]){ nums[j] = nums[i]; j++; } return j; }}
反思:对于一个问题要紧紧抓住实质,去分析,转化,从多个方面来分析,归并,转化,分解。比如:思考什么是要放入的,可以转而思考什么是不放入的......
0 0
- leetcode_middle_73_80. 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
- Remove Duplicates from Sorted Array II
- [Leetcode] Remove Duplicates from Sorted Array II
- [LeetCode] Remove Duplicates from Sorted Array II
- Remove Duplicates from Sorted Array II
- [leetcode] Remove Duplicates from Sorted Array II
- Remove Duplicates from Sorted Array II
- Remove duplicates from sorted array II
- Remove Duplicates from Sorted Array II
- [LeetCode]Remove Duplicates from Sorted Array II
- Remove Duplicates from Sorted Array II
- Remove Duplicates from Sorted Array II
- Remove Duplicates from Sorted Array II
- Remove Duplicates from Sorted Array II
- [leetcode]Remove Duplicates from Sorted Array II
- 如何通过代码实现自动安装、启动和卸载Windows服务
- 安卓 监听网络视频播放 卡顿
- java基础_day0001_变量定义规则
- apache设置虚拟主机
- 怎么给MindMapper添加特殊字符
- leetcode_middle_73_80. Remove Duplicates from Sorted Array II
- 微信公众号文章采集的入口--历史消息页详解
- 有关存储区的区域分配问题
- mac双开eclipse
- centos 安装 MySQLdb 和 psycopg2
- js日期格式化: javascript Date format()
- editplus快捷键汇总
- BZOJ 2017省队十连测推广赛1
- pci_bus_type/amba_bustype/platform_bus_type 下的driver使用smmu