力扣80删除有序数组的重复

本题用通解,k这里为2,

1.本题目是有序数组,允许有两个数字重复,就例如11223344,前k(即2个)个是肯定可以保存的,到第三个即以后的就要比较了。

用pos表示当前要放的数的位置下标,此位置放的数必须与该位置的前面k个数的第一个数不同,因为假设k=2,序列为112,这里2只用于第一个1不同,因为毎k个为一组,只允许k个重复。

所以用一个num遍历数组,pos<k前k个肯定首先不用考虑,所以另个判断条件即使数组越界了也没事,因为到不了那个判断那里,然后从第k个就可以开始放了,毎放一个,pos+1。

而放不放的条件就是判断这个数是否与要放到位置的向前数第k个数不同。

2.这两个写法等价

cpp 复制代码
for (auto i : nums)
cpp 复制代码
for(int i=0;i<nums.size();i++)

3.未知长度数组连续键入值存入数组How

while((scanf("%d",&a))!=EOF)

4.代码

cpp 复制代码
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
	int k = 2;
	int pos = 0;
	for (auto num : nums) {
		if (pos < k || nums[pos - k] != num) {
			nums[pos] = num;
			pos++;
		}
	}
	return pos;
}


};
相关推荐
从心归零8 分钟前
sshj使用代理连接服务器
java·服务器·sshj
IT毕设梦工厂1 小时前
计算机毕业设计选题推荐-在线拍卖系统-Java/Python项目实战
java·spring boot·python·django·毕业设计·源码·课程设计
luthane2 小时前
python 实现average mean平均数算法
开发语言·python·算法
静心问道2 小时前
WGAN算法
深度学习·算法·机器学习
Ylucius2 小时前
动态语言? 静态语言? ------区别何在?java,js,c,c++,python分给是静态or动态语言?
java·c语言·javascript·c++·python·学习
七夜zippoe2 小时前
分布式系统实战经验
java·分布式
杰九2 小时前
【算法题】46. 全排列-力扣(LeetCode)
算法·leetcode·深度优先·剪枝
manba_2 小时前
leetcode-560. 和为 K 的子数组
数据结构·算法·leetcode
liuyang-neu2 小时前
力扣 11.盛最多水的容器
算法·leetcode·职场和发展
是梦终空2 小时前
JAVA毕业设计176—基于Java+Springboot+vue3的交通旅游订票管理系统(源代码+数据库)
java·spring boot·vue·毕业设计·课程设计·源代码·交通订票