Find All Numbers Disappeared in an Array数组--力扣101算法题解笔记

11.2Find All Numbers Disappeared in an Array数组

题目描述

给定一个长度为n的数组,其中包含范围从1到n的整数,有些整数重复了很多次,有些整数没有出现。求1到n中没有出现过的整数

输入输出样例

Input :4, 3, 2, 7, 8, 2, 3, 1

Output:5, 6

题解

核心思想:用数组本身当下标,数字出现过 → 就把对应位置标记成负数;最后还是正数的位置,就是没出现过的数字!

数字 x 对应下标 x-1

出现过 → 标记为负

还是正数 → 没出现过 → 就是答案

cpp 复制代码
#include <iostream>
#include <vector>
using namespace std;

vector<int> findDisappearedNumbers(vector<int>& nums) {
        vector<int> ans;
        for (const int& num : nums) {// 用数字找它应该在的位置
                int pos = abs(num) - 1;//abs(x)=x的绝对值
                if (nums[pos] > 0) {
                        nums[pos] = -nums[pos];// 出现过 → 标记成负数
                }
        }
        for (int i = 0; i < nums.size(); ++i) {
                if (nums[i] > 0) {
                        ans.push_back(i + 1);//把正数放到数组里,就是没出现过的数
                }
        }
        return ans;
}

int main() {
        vector<int> nums = { 4, 3, 2, 7, 8, 2, 3, 1 };

        vector<int> res = findDisappearedNumbers(nums);
        int count = res.size();

        cout << "[";
        for (const int &r : res) {
                cout << r;
                count--;
                if (count) {
                        cout << ",";
                }
        }
        cout << "]" << endl;

        return 0;
}
相关推荐
测试_AI_一辰1 小时前
AI Agent 评测最隐蔽的坑-记忆
人工智能·算法·ai·自动化·ai编程
Hotchip_MEMS1 小时前
TWS耳机微米级较量:超薄LGA封装如何助力MEMS麦克风小型化?
人工智能·笔记·物联网·电脑
lucas_AI1 小时前
给YOLO检测器插 LoRA,'插对地方'比'插什么'更要命
人工智能·算法
Ztt6666666661 小时前
金泉方壶四面端正,月白釉却把棱角放柔了
经验分享·笔记·其他·百度·微信公众平台
学习和思考1 小时前
非自动化专业如何自学PLC?我的6个月学习路线图
笔记·学习·自动化·学习方法
LuminousCPP2 小时前
数据结构-时间与复杂度|时间/空间复杂度 + 两道力扣练习 + 二分查找复盘
c语言·数据结构·经验分享·算法·leetcode
Nil2082 小时前
leetcode 三数之和
数据结构·算法·leetcode
小小龙学IT2 小时前
C++ std::vector 底层实现深度解析:内存布局、扩容策略、移动语义与迭代器失效
开发语言·c++·算法
eBest数字化转型方案2 小时前
从工程视角拆解冰柜资产管理:拍照识别 pipeline、纯净度算法与 IoT 选型踩坑
人工智能·物联网·算法
Interview Aid1122 小时前
Roblox OA 面经|小游戏+编程双修,Coding 两题满分通过
算法