博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode之旅】 数组 - 268.缺少数字
阅读量:2056 次
发布时间:2019-04-28

本文共 1080 字,大约阅读时间需要 3 分钟。

给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。

示例 1:

输入: [3,0,1]输出: 2

示例 2:

输入: [9,6,4,2,3,5,7,0,1]输出: 8

说明:

你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?

解答:

/** *  * @param nums * @return */public int missingNumber(int[] nums) {    //利用数组的特性,再进行抑或运算 a ^ b ^ = a    //数组的特性:下标从0开始,长度比索引要大一位,所以一定会有一个缺失的数字    //抑或运算:    //例子: {0,2,1} :    // (0 ^ res ^ 0) ^ (1 ^ 2) ^ (2 ^ 1)    // res ^ 0 ^ 0 ^ 1 ^ 1 ^ 2 ^ 2    // 索引  结果(默认为长度)  索引值  结果    // 0   ^    3          ^   0    3    // 1   ^    3          ^   2    0    // 2   ^    0          ^   1    3    //{2,1,3}    // 索引  结果(默认为长度)  索引值  结果    // 0   ^    3          ^   2    1    // 1   ^    1          ^   1    1    // 2   ^    1          ^   3    0    //解释:    //在完全没有缺失的情况,索引和索引值是一一对应的: nums[index] = index    //当缺失一个数字后,索引和索引值就会有一对不会对应:    //{2,1,3} 3(长度) ^ 0 ^ 3 ^ 1 ^ 1 ^ 2 ^ 2 = 0    //{0,2,1} 3(长度) ^ 0 ^ 0 ^ 1 ^ 1 ^ 2 ^ 2 = 3    //{0,1,3} 3(长度) ^ 0 ^ 0 ^ 1 ^ 1 ^ 2 ^ 3 = 2    int result = nums.length;    for (int i = 0; i < nums.length; i++) {        result =i ^ result ^ nums[i];  //a ^ b ^ b = a    }    return result;}

 

 

转载地址:http://kxslf.baihongyu.com/

你可能感兴趣的文章
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>
【托业】toeic托业必背核心词汇_修正版
查看>>
【托业】【新东方托业全真模拟】TEST09~10-----P5~6
查看>>
【托业】新托业全真题库---TEST1
查看>>
【托业】【新东方托业全真模拟】TEST07~08-----P5~6
查看>>
【托业】【跨栏阅读】错题集-REVIEW1
查看>>
【托业】【跨栏】3
查看>>
【托业】【跨栏】REVIEW2
查看>>
【托业】【怪兽】TEST04
查看>>
【托业】【怪兽】TEST01
查看>>
【托业】【怪兽】TEST02
查看>>
【托业】【怪兽】TEST03
查看>>
【托业】【跨栏】TEST04
查看>>
【托业】【跨栏】TEST05
查看>>
【托业】【全真题库】TEST1-语法题+阅读题
查看>>
【托业】【全真题库】TEST3-语法题+阅读题
查看>>
【托业】【跨栏】TEST06
查看>>
【托业】320题-语法题(03-04)(03-37、04-11)
查看>>
【日语】五十音图-一个好用的日语五十音图记忆方法
查看>>
linux下使用crontab实现定时PHP计划任务失败的原因分析
查看>>