Missing Number (LeetCode)
Given an array nums
containing n
distinct numbers in the range [0, n]
, return the only number in the range that is missing from the array.
Follow up: Could you implement a solution using only O(1)
extra space complexity and O(n)
runtime complexity?
Example 1:
Input: nums = [3,0,1] Output: 2 Explanation: n = 3 since there are 3 numbers, so all numbers are in the range [0,3]. 2 is the missing number in the range since it does not appear in nums.
Example 2:
Input: nums = [0,1] Output: 2 Explanation: n = 2 since there are 2 numbers, so all numbers are in the range [0,2]. 2 is the missing number in the range since it does not appear in nums.
Solutions(Java):
1. class Solution {
public int missingNumber(int[] nums) {
int i = 0;
while(i < nums.length) {
int correct = nums[i];
if (nums[i] < nums.length &&nums[i] != nums[correct])
swap(nums, i, correct);
else
i++;
}
for (int j = 0; j <nums.length; j++){
if ( nums[j] != j)
return j;
}
return nums.length;
}
void swap(int[] nums, int i, int correct) {
int temp = nums[i];
nums[i] = nums[correct];
nums[correct] = temp;
}
}
2. class Solution {
public int missingNumber(int[] nums) {
int sum = 0;
int idealSum = 0;
int i = 0;
for(i = 0; i < nums.length; i++) {
sum = sum + nums[i];
idealSum = idealSum + i;
}
idealSum = idealSum + i;
return idealSum - sum;
}
}
Comments
Post a Comment