ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

leetcode 算法题268 (简单072) 缺失数字

2019-09-20 20:01:23  阅读:291  来源: 互联网

标签:return nums JavaScript number length 提交 072 268 leetcode


leetcode 算法题268 (简单072) 缺失数字

  • 题目介绍
给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,
找出 0 .. n 中没有出现在序列中的那个数。
  • 示例

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

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

  • 解法一
/**
 * @param {number[]} nums
 * @return {number}
 */
var missingNumber = function(nums) {
  if(nums.length === 0) {
      return 0;
  }
  if(nums.length === 1) {
      return nums[0] === 0 ? nums.length : 0;
  }
  nums.sort((n1, n2) => n1 - n2)
  console.log(nums);
  let i = nums.length - 1;
  while(i > 0) {
    if(nums[i] - nums[i - 1] !== 1) {
      return nums[i] - 1;
    }
    i--;
  }
 return nums[0] === 0 ? nums.length : 0;
};

执行用时 : 176 ms, 在所有 JavaScript 提交中击败了16.64%的用户

内存消耗 : 38.9 MB, 在所有 JavaScript 提交中击败了5.88%的用户

  • 解法二
/**
 * @param {number[]} nums
 * @return {number}
 */
var missingNumber = function(nums) {
  let temp = new Array(nums.length + 1), i = 0;
  while(i < nums.length) {
    temp[nums[i++]] = 1
  }
  while(i >= 0) {
    if(temp[i] !== 1) {
      return i;
    }
    i--;
  }
};

执行用时 : 80 ms, 在所有 JavaScript 提交中击败了92.55%的用户

内存消耗 : 37.1 MB, 在所有 JavaScript 提交中击败了35.39%的用户

  • 解法三
/**
 * @param {number[]} nums
 * @return {number}
 */
var missingNumber = function(nums) {
  let i = 0, j = 0;
  while (j < nums.length) {
    if (nums[j] !== i) {
      j++;
    } else {
      i++;
      j = 0;
    }
  }
  return i;
};

执行用时 : 296 ms, 在所有 JavaScript 提交中击败了11.61%的用户

内存消耗 : 36.4 MB, 在所有 JavaScript 提交中击败了42.98%的用户

  • 解法四
/**
 * @param {number[]} nums
 * @return {number}
 */
var missingNumber = function(nums) {
  let i = 0, num = 0;
  while (i < nums.length) {
    num ^= (i ^ nums[i++]);
  }
  return num ^ i;
};

执行用时 : 76 ms, 在所有 JavaScript 提交中击败了96.19%的用户

内存消耗 : 36 MB, 在所有 JavaScript 提交中击败了72.40%的用户

标签:return,nums,JavaScript,number,length,提交,072,268,leetcode
来源: https://blog.csdn.net/FYuu95100/article/details/101075393

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有