leetcode 缺失数字

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

示例 1:

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

示例 2:

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

方法1:排序去重查找
var missingNumber = function (nums) {
            var naturalNum = 0;
            var newArr = [];
            function sortNumber(a,b) {
                return a - b;
            }
            nums.sort(sortNumber);
            for (let i = 0; i < nums.length; i++) {
                if (newArr.indexOf(nums[i]) === -1) {
                    newArr.push(nums[i]);
                }
            }
            for (let i = 0; i < newArr.length; i++) {
                if (newArr[i] === naturalNum) {
                    naturalNum++;
                    if (naturalNum === newArr.length) {
                        return naturalNum;
                    }
                    continue;
                } else {
                    return naturalNum;
                }
            }
        };

方法2:下标查找

var missingNumber = function (nums) {
    var len = nums.length;
    for(let i = 0;i < len;i++) {
        if(nums.indexOf(i) === -1) {
            return i;
        }
    }
    return len;
};

方法3:求差

var missingNumber = function (nums) {
    var sum1 = 0;
    var sum2 = (1 + nums.length) * nums.length / 2;
    nums.map(item => sum1 += item);
    return sum2 - sum1;
};

原文地址:https://www.cnblogs.com/LJ96/p/11259936.html

时间: 2024-08-30 17:03:37

leetcode 缺失数字的相关文章

Leetcode 268.缺失数字 By Python

给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8 说明: 你的算法应具有线性时间复杂度.你能否仅使用额外常数空间来实现? 思路 因为给定的序列也是从0开始,所以可以进行排序,比较索引和索引对应的值,如果两个不等于说明就确实一个值了,还要注意一个情况是,没出现的数字是n 代码 class Solution(obje

第一个缺失数字

Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0] return 3,and [3,4,-1,1] return 2. Your algorithm should run in O(n) time and uses constant space. 思路: 桶排的思想 从头到尾遍历数组,在位置 i,希望放置的元素是 i+1, 如果不是, 就把 A[ i

leetcode问题:缺失数字

给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8 说明: 你的算法应具有线性时间复杂度.你能否仅使用额外常数空间来实现? 解法1:思路:采用数列求和的方式 class Solution {    public int missingNumber(int[] nums) {        Arrays.sort(n

LeetCode 第268题 缺失数字

给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 示例 1: 输入: [3,0,1]输出: 2示例 2: 输入: [9,6,4,2,3,5,7,0,1]输出: 8 思路1: 0~n个数的总和 - 数组中所有数的和 = 缺失的数思路2: 异或 1 class Solution268 { 2 public int missingNumber(int[] nums) { 3 int n = nums.length + 1; 4 long

【leetcode 简单】 第七十四题 缺失数字

给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8 说明: 你的算法应具有线性时间复杂度.你能否仅使用额外常数空间来实现? class Solution: def missingNumber(self, nums): """ :type nums: List[int] :rtype: int 等

leetcode consecutive-numbers 数字连续出现次数大于三次的数字

题目详情参见: https://leetcode.com/problems/consecutive-numbers/ 难度也只是medium,中等难度,阅读题意,也只是统计一下数字连续出现次数大于3次,例如,1,1,1,2,2,1 在这个序列中,只有1 连续出现了3次,最后显示1 即可,注意排除重复数字,即1 可能 1,1,1,2,2,1,1,1,1,这种情况下,显示一个1即可,在sql语句中添加 distinct过滤重复记录即可. 关键:定义变量统计数字的连续计数. select distin

number to string - LeetCode【数字 =&gt; 字符串】

228. Summary Ranges 让我们找出连续的序列,然后首尾两个数字之间用个"->"来连接,那么我只需遍历一遍数组即可,每次检查下一个数是不是递增的,如果是,则继续往下遍历,如果不是了,我们还要判断此时是一个数还是一个序列,一个数直接存入结果,序列的话要存入首尾数字和箭头"->".我们需要两个变量i和j,其中i是连续序列起始数字的位置,j是连续数列的长度,当j为1时,说明只有一个数字,若大于1,则是一个连续序列

[Swift]LeetCode268. 缺失数字 | Missing Number

Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array. Example 1: Input: [3,0,1] Output: 2 Example 2: Input: [9,6,4,2,3,5,7,0,1] Output: 8 Note:Your algorithm should run in linear runtime

leetcode 201. 数字范围按位与 解题报告

给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点). 示例 1: 输入: [5,7] 输出: 4 示例 2: 输入: [0,1] 输出: 0 思路分析 由于是按位与,那么某位一旦出现0,结果该位肯定是0.所以只需要考虑m,n都是1的位置.那么直接从高位开始,往低位走,直到遇到该为的数字不相等,将其后的数为都置为0,即为[m,n]之间所有的数字按位与的结果.代码如下 #include<bits/st