你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

【每日一题026】leetcode-26

2021/11/5 7:51:09

目录

  • 题目
  • 思路
  • 相关思考
  • 代码(C++/力扣)

题目

题目来源
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

思路

按照考研时王道书里面的相关思路,利用两个变量i、j,分别表示处理元素和目前已有的元素个数(也可以是位置)

相关思考

一开始一直尝试使用count计数,然后用i+count的方法赋值,但是会出现i+count超出数组范围的情况。

代码(C++/力扣)

int removeDuplicates(vector<int>& nums) {
	if (nums.size() < 2) return nums.size();
	int j = 0;
	for (int i = 1; i < nums.size(); i++)
		if (nums[j] != nums[i]) nums[++j] = nums[i];
	return ++j;
}