找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

微信名称:美国米群网

微 信 号:MeetQun

微信QQ:群: 320065698

查看: 308|回复: 3
收起左侧

[刷题记录板] 448. Find All Numbers Disappeared in an Array

[复制链接]

5

主题

0

精华

15

积分

新米人

Rank: 1

积分
15
发表于 1-10-2017 11:06 PM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
要求without extra space, 所以要进行原位操作,采用正负数标记法,如数a出现在array中,则nums[a-1]标记为负,则最后为正的数的下标+1就是没有出现的数
  1. public class Solution {
  2.     public List<Integer> findDisappearedNumbers(int[] nums) {
  3.         List<Integer> lst = new ArrayList<Integer>();
  4.         int size = nums.length;
  5.         
  6.         // 如果有数a, 则将nums[a-1]变成负数,作为标记
  7.         for (int i = 0; i<size; i++){
  8.             int pos = Math.abs(nums【i】)-1;
  9.             if (nums[pos] > 0){
  10.                 nums[pos] = -nums[pos];
  11.             }
  12.         }
  13.         
  14.         // output result
  15.         for (int i = 0; i<size; i++){
  16.             if (nums【i】 > 0){
  17.                 lst.add(i+1);
  18.             }
  19.         }
  20.         return lst;
  21.     }
  22. }
复制代码

0

主题

0

精华

7

积分

新米人

Rank: 1

积分
7
发表于 1-10-2017 11:06 PM | 显示全部楼层
感谢zhangyuwinnie分享~~~
回复 支持 反对

使用道具 举报

880

主题

141

精华

2714

积分

米群网大牛

Rank: 6Rank: 6

积分
2714
发表于 1-11-2017 06:02 PM | 显示全部楼层
感谢zhangyuwinnie分享~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


快速回复 返回顶部 返回列表