栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode 268. 丢失的数字(简单、数组)day11

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode 268. 丢失的数字(简单、数组)day11

题目描述:给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。

示例 1:

输入:nums = [3,0,1]
输出:2
解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。

示例 2:

输入:nums = [0,1]
输出:2
解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。

示例 3:

输入:nums = [9,6,4,2,3,5,7,0,1]
输出:8
解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。8 是丢失的数字,因为它没有出现在 nums 中。

示例 4:

输入:nums = [0]
输出:1
解释:n = 1,因为有 1 个数字,所以所有的数字都在范围 [0,1] 内。1 是丢失的数字,因为它没有出现在 nums 中。

结题思路:
方法一:使用辅助空间,这是看到题目的第一反应,使用一个辅助数组,根据题目的描述进行求解。原来的nums数组内容为0~n(不是连续的,缺少一个元素),那么就声明一个长度为n+1的数组tempArray,tempArray数组默认值都为0,此时遍历nums数组,把tempArray[nums[i]]赋值为1,那么遍历完全之后,tempArray数组中值为0的标签就是nums中缺失的元素。

方法二:使用异或操作,可以参考文章https://blog.csdn.net/qq_43751200/article/details/124226320?spm=1001.2014.3001.5501, nums数组中共有n个元素(0~n中缺失一个),那么依次和0,1,2…n异或的结果就是nums数组中缺失的元素;

代码实现如下:

public class MissingNumber {
    public static void main(String[] args) {
        int[] array = {9,6,4,2,3,5,7,0,1};
        System.out.println(missingNumber1(array));
    }
    public static  int missingNumber(int[] nums) {
        int[] tempArray = new int[nums.length+1];  // 辅助空间,尝试都为0, 长度这位为nums.length+1,这是为了防止数据越界

        for (int i = 0; i < nums.length; i++) {
            tempArray[nums[i]] = 1; // 把nums存在的元素设置为1
        }

        for (int i = 0; i < tempArray.length; i++) {
            if(tempArray[i] == 0){
                return i;
            }
        }

        return 0;
    }

    public static int missingNumber1(int[] nums){
        int xor = 0;

        for(int i = 1; i <= nums.length; i++){   // 在原来的数组上重新添加0~n个数,那么数组就变为2n+1了,可以进行异或运算
            xor ^= i;
        }

        for(int i = 0; i < nums.length; i++){
            xor ^= nums[i];
        }

        return xor;
    }
}

提示:
n == nums.length
1 <= n <= 104
0 <= nums[i] <= n
nums 中的所有数字都 独一无二
进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/missing-number

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821192.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号