leetcode -- 448. Find All Numbers Disappeared in an Array【数组】
来源:互联网 发布:十三交友平台 知乎 编辑:程序博客网 时间:2024/04/30 10:48
题目
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 <= a[i] <= n (n是数组的大小)一些数字出现了两次,一些没有出现。找出所有[1,n]中的没有
出现在数组中的元素。
解法
解法1:
- 【游标】双向游标的使用。(源游标,目标游标)
- 朴素的做法
public List<Integer> findDisappearedNumbers(int[] nums) { List <Integer> out = new ArrayList<>(); Arrays.sort(nums); int current = 1; for(int i = 0;i<nums.length;){ if(nums[i] == current){ current ++; i++; }else if(nums[i] < current){ i++; }else{ out.add(current++); } } for(int j = current; j <= nums.length;j++){ out.add(j); } return out; }
解法2
- 数组下标,与其中的值在同一个空间中。
The basic idea is that we iterate through the input array and mark elements as negative using nums[nums[i] -1] = -nums[nums[i]-1]. In this way all the numbers that we have seen will be marked as negative. In the second iteration, if a value is not marked as negative, it implies we have never seen that index before, so just add it to the return list.
public List<Integer> findDisappearedNumbers(int[] nums) { List<Integer> ret = new ArrayList<Integer>(); for(int i = 0; i < nums.length; i++) { int val = Math.abs(nums[i]) - 1; if(nums[val] > 0) { nums[val] = -nums[val]; } } for(int i = 0; i < nums.length; i++) { if(nums[i] > 0) { ret.add(i+1); } } return ret; }
- leetcode -- 448. Find All Numbers Disappeared in an Array【数组】
- 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
- 十九、机器人是怎么理解“日后再说”的
- Opencv鼠标响应(框选以及取点)
- 二十、语义角色标注的基本方法
- spring介绍
- 流媒体协议—FLV
- leetcode -- 448. Find All Numbers Disappeared in an Array【数组】
- 二十一、比TF-IDF更好的隐含语义索引模型是个什么鬼
- Error:(100, 0) Could not find method android() for arguments 解决办法
- 二十二、神奇算法之人工神经网络
- css画三角形
- 荣耀5x全网通版使用过程中出现了2个问题,一个功能未实现,一个是时间和日期关闭后自动开启。
- 二十三、用CNN做深度学习
- 【eclipse_bug_002】java.net.SocketException: Software caused connection abort: socket write error
- Jmeter进行性能测试时多台负载机的配置方法