[LeetCode] 448. Find All Numbers Disappeared in an Array
来源:互联网 发布:mysql 查看数据库权限 编辑:程序博客网 时间:2024/05/17 22:34
题目链接: https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/
Description
Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.
Find all the elements of [1, n] inclusive that do not appear in this array.
Could you do it without extra space and in O(n) runtime? You may assume the returned list does not count as extra space.
Example:
Input:[4,3,2,7,8,2,3,1]Output:[5,6]
解题思路
遍历一遍数组,出现数字 - 1
当做数组下标,将该下标在数组中的值存为负数,用来表示这个数字出现过。
例如,题目样例中的第一个数 4,就将数组下标为 4 - 1 = 3
的内容存为负数,即 nums[3] = nums[3] > 0 ? -nums[3] : nums[3]。然后再次遍历一遍数组,存储值为正数的数组下标 + 1
,即为缺失的值。
还是拿题目样例来说明,按照上面的思路,要循环遍历两次。第一次遍历后数组内容变为:
[-4, -3, -2, -7, 8, 2, -3, -1]
第二次遍历,就找出了两个正数的下标,4 和 5,分别加 1,得缺失的值为 5 和 6。
Code
class Solution {public: vector<int> findDisappearedNumbers(vector<int>& nums) { int length = nums.size(); vector<int> ans; if (length == 0) return ans; for (int i = 0; i < length; ++i) if (nums[abs(nums[i]) - 1] > 0) nums[abs(nums[i]) - 1] *= -1; for (int i = 0; i < length; ++i) if (nums[i] > 0) ans.push_back(i + 1); return ans; }};
0 0
- LeetCode-Array-448. Find All Numbers Disappeared in an Array
- leetcode:448. Find All Numbers Disappeared in an Array
- LeetCode 448. Find All Numbers Disappeared in an Array
- <leetcode>448.Find All Numbers Disappeared in an Array
- [LeetCode] 448. Find All Numbers Disappeared in an Array
- [LeetCode]448. Find All Numbers Disappeared in an Array
- leetcode 448. Find All Numbers Disappeared in an Array
- Leetcode 448. Find All Numbers Disappeared in an Array
- 【LeetCode】 448. Find All Numbers Disappeared in an Array
- 448. [LeetCode]Find All Numbers Disappeared in an Array
- [leetcode] 448. Find All Numbers Disappeared in an Array
- LeetCode 448. Find All Numbers Disappeared in an Array
- Leetcode-448. Find All Numbers Disappeared in an Array
- 【Leetcode】448. Find All Numbers Disappeared in an Array
- LeetCode - 448. Find All Numbers Disappeared in an Array
- LeetCode 448. Find All Numbers Disappeared in an Array
- LeetCode--448. Find All Numbers Disappeared in an Array
- LeetCode 448. Find All Numbers Disappeared in an Array(Java)
- 浅谈Java Web重定向和请求转发
- android 服务存活的方法
- 看了谷歌的视频演示秒懂平衡二叉搜索树--迷之旋转
- eclipse安装完maven后,打开报错 Eclipse is running in a JRE, but a JDK is required
- 现在详解Android App AllowBackup配置带来的风险
- [LeetCode] 448. Find All Numbers Disappeared in an Array
- Java——枚举
- Topbeat --Metricbeat 在Windows上设置 centos kafka 打数据 成功
- 插件资源整理【申明:来源于网络】
- 【Java】为什么不推荐程序员去外包公司?
- Linux常用命令
- 微信教程01:接入指南
- 连到了自己的服务器就很满足
- 用卷积神经网络检测脸部关键点的教程(三)学习率,学习动量,dropout