LeetCode算法题(数组相关)(九)——丢失的数字
程序员文章站
2022-03-15 21:07:19
...
问题:
给定一个包含 [0, n]
中 n
个数的数组 nums
,找出 [0, n]
这个范围内没有出现在数组中的那个数。
输入:nums = [3,0,1]
输出:2
解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。
输入:nums = [0,1]
输出:2
解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。
算法:
这道题目也简单的,我的思路就是创建一个新数组,新数组的长度等于给定数组长度加1,我画个示意图如下:
这是我们的第一步。第二步就是赋值,赋值的具体算法如下图:
对于给定数组,如上图,我们把nums数组中的9赋值给新数组下标为9的位置。剩下的以此类推,这样肯定会剩下一个元素没被赋值,那么没被赋值的肯定就是丢失的数字。java中,数组如果没有被赋值默认是0,因此只要判断,除了下标为0的位置,看看还有没有其他位置的元素是0,如果有,那么就是丢失的数字,如果没有,那么0就是丢失的数字。
实现:
class Solution {
public int missingNumber(int[] nums) {
int len = nums.length;
int [] n = new int[len+1];
for(int i = 0;i<len;i++){
n[nums[i]] = nums[i];
}
int k,rs=0;
for(k = 1;k<len+1;k++){
if(n[k]==0){
rs = k;
}
}
return rs;
}
}
上一篇: tomcat配置多个网站多个站点
推荐阅读
-
Java~利用二分查找完成牛客经典算法题--查找旋转数组的最小数字
-
JS算法题之查找数字在数组中的索引位置
-
LeetCode算法题(数组相关)(二)——两数之和
-
leetcode刷题(数组·位异或)16— 只出现一次的数字 II
-
LeetCode 探索 初级算法 数组 第一题:删除排序数组中的重复项
-
LeetCode 探索 初级算法 数组 第六题: 两个数组的交集 II
-
LeetCode 探索 初级算法 数组 第五题:只出现一次的数字
-
LeetCode 探索 初级算法 数组 第十题:有效的数独
-
LeetCode 探索 初级算法 数组 第九题:两数之和
-
LeetCode第448题找到所有数组中消失的数字(Python)