Leetcode 448. Find All Numbers Disappeared in an Array 找没有的数 解题报告

来源:互联网 发布:手机拍照赚钱软件 编辑:程序博客网 时间:2024/06/08 01:26

1 解题思想

这道题会给一个长度为n的数组,这个数组里面包含1-n的数字,数字的分布并不均匀,数字可以出现0-n次

所以这个数组中可能并不完全包含1-n中的所有数字,现在需要你在常数时间和不用额外空间的情况下找出那些数字没有出现过

解题思想是,遍历两轮:
1、第一轮将每个数字对应的那个位置的数字变成负值(因为所有数都是正的,这么做不影响后续)
2、第二轮,统计那些没有变成负值的,这些就是没有出现过的数

2 原题

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]

3 AC解

public class Solution {    public List<Integer> findDisappearedNumbers(int[] nums) {        List<Integer> res = new ArrayList<Integer>();        int n = nums.length;        //第一轮,将所有出现过的值对应的位置变为负数        for(int i=0;i<n;i++){            int index = Math.abs(nums[i]) - 1;            nums[index] = Math.abs(nums[index]) * -1;        }        //第二轮,统计不为负数的(就是没出现过的)        for(int i=0;i<n;i++){            if(nums[i] > 0)                res.add(i+1);        }        return res;    }}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 高铁票出票失败怎么办 高铁票名字打错怎么办 高铁票姓名错了怎么办 高铁票弄丢了怎么办 用过的车票丢了怎么办 高铁票被水洗了怎么办 沈阳地铁卡丢了怎么办 火车票没写检票口怎么办 吃鸡听的脚步声距离太近怎么办 检票时车票丢了怎么办 高铁出站没检票怎么办 高铁来不及取票怎么办 被发现假的增值税发票怎么办 高铁票身份证验证失败怎么办 网上订的火车票查不到怎么办 已经参加工作想学个本科证怎么办 火车晚点耽误下一趟列车怎么办 门外装监控没有预留电线怎么办 框架柱主筋柱顶预留长度不够怎么办 遇到很嚣张的人怎么办 在地板砖上铺木地板卧室门怎么办 宝宝打预防针的本子丢了怎么办 宝宝打预防针本子丢了怎么办 打疫苗的本子丢了怎么办 麦客收割机麦秸里加麦粒怎么办 高铁乘务员身高不够怎么办 坐火车买到站票怎么办 买上车补票原票怎么办? 买的商务座补票怎么办 12306账号被别人登录怎么办 飞机不提供餐食怎么办 12306退票支付宝失败怎么办 12306重复支付怎么办支付宝 支付宝登的12306账号怎么办 没买儿童高铁票怎么办 网上订的机票怎么办托运 半夜买高铁票不出票怎么办 轻轨少买了一站怎么办 高铁火车票丢了怎么办 如果高铁票丢了怎么办 高铁票丢了怎么办 报销