We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
给定一个包含 [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 中。
提示:
进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/missing-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
const missingNumber = nums => { const arr = [], max = nums.length while (nums.length) { const n = nums.shift() arr[n] = true } for (let i = 0; i <= max; i++) { if (!arr[i]) return i } }
先利用等差数列求和公式得到1~nums.length的所有和, 然后拿着和再一一减去nums里所有的数字, 最后剩下的值就是缺少的数字
nums.length
nums
const missingNumber = nums => { const max = nums.length let sum = (1 + max) * (max / 2) while (nums.length) { sum -= nums.pop() } return sum }
这道题和136. 只出现一次的数字是同一个思路
136. 只出现一次的数字
假设数组为: [3, 0, 1] 那就执行: (3^0^1) ^ (0^1^2^3) 此时就会得到缺失的数字2
本以为这个方法的效率最快, 结果发现竟然还没有数学方式快
const missingNumber = nums => { let res = 0, len = nums.length for (let i = 0; i <= len; i++) { res ^= nums[i] res ^= i } return res }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。
示例 1:
示例 2:
示例 3:
示例 4:
提示:
进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/missing-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
先利用等差数列求和公式得到1~
nums.length
的所有和, 然后拿着和再一一减去nums
里所有的数字, 最后剩下的值就是缺少的数字这道题和
136. 只出现一次的数字
是同一个思路本以为这个方法的效率最快, 结果发现竟然还没有数学方式快
The text was updated successfully, but these errors were encountered: