网站首页 > 精选教程 正文
题目
解题代码与测试
//
// Created by tannzh on 2020/6/26.
//
/*
* 删除排序数组中的重复项
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
示例 1:
给定数组 nums = [1,1,2],
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。
你不需要考虑数组中超出新长度后面的元素。
示例 2:
给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
你不需要考虑数组中超出新长度后面的元素。
说明:
为什么返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
你可以想象内部操作如下:
// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums);
// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。
for (int i = 0; i < len; i++) {
print(nums[i]);
}
*/
#include <iostream>
#include <vector>
using std::vector;
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
auto n = nums.size();
if (n < 2) return n;
int size = 1;
for (int i = 1; i != n; ++i)
if (nums[i-1] != nums[i])
nums[size++] = nums[i];
return size;
}
};
int main(int argc, char **argv)
{
Solution s;
std::vector<int> nums1 = {1,1,2};
std::vector<int> nums2 = {0,0,1,1,1,2,2,3,3,4};
std::cout << "nums1 = " << s.removeDuplicates(nums1) << std::endl;
std::cout << "nums2 = " << s.removeDuplicates(nums2) << std::endl;
return 0;
}
解题思路分析
这道题目比较简单,基本上看代码都能明白了,主要运用赋值法,即设置两个游标,一个指向数组的长度,一个遍历整个数组,然后遇到不重复项,则将数组长度指向的位置赋值为该不重复项,然后长度加一。
猜你喜欢
- 2025-05-23 C# 动态数组(ArrayList)
- 2025-05-23 C# 7.0中的Discard 变量:简化代码的利器
- 2025-05-23 JS数组过滤元素的方法
- 2025-05-23 JavaScript去除数组重复元素的几种方法
- 2025-05-23 【HarmonyOS Next之旅】ArkTS语法(一)
- 2025-05-23 C/C++编程笔记:帮你整理了"数组"的知识点!赶紧收藏
- 2025-05-23 Java 基础(四)集合源码解析 List
- 2025-05-23 Java中数组的声明和初始化方法
- 2025-05-23 数组、链表、队列和栈,四大基础数据结构详解
- 2025-05-23 最快清除数组空值?分享 1 段优质 JS 代码片段!
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)