Missing Number Problem leet code

 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.


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.


Example 3:


Input: nums = [9,6,4,2,3,5,7,0,1]


Output: 8


Explanation:


n = 9 since there are 9 numbers, so all numbers are in the range [0,9]. 8 is the missing number in the range since it does not appear in nums.


Constraints:


n == nums.length

1 <= n <= 104

0 <= nums[i] <= n

All the numbers of nums are unique.


Using a Hash Array to Find the Missing Number

A hash array (hash[]) is an efficient way to track occurrences of numbers in an array when the range of numbers is known. Here, since the given numbers range from 0 to N, we can use an extra array to store frequency counts.

class Solution {
    public int missingNumber(int[] nums) {
        int N = nums.length;
        int[] hash = new int[N + 1];  // Hash array of size N+1 (to track numbers from 0 to N)

        // Step 1: Mark numbers present in nums[]
        for (int num : nums) {
            hash[num] = 1;
        }

        // Step 2: Find the missing number (index where value is 0)
        for (int i = 0; i <= N; i++) {
            if (hash[i] == 0) {
                return i;  // This is the missing number
            }
        }

        return -1; // Should never reach here
    }

}





Solution2 Brute Force


 public int missingNumber(int[] nums) {

        int N = nums.length;

        int expectedSum = (N * (N + 1)) / 2;  // Sum of numbers from 0 to N

        int actualSum = 0;


        for (int num : nums) {

            actualSum += num;

        }


        return expectedSum - actualSum;  // Missing number

    }




Comments

Popular posts from this blog

Two Sum II - Input Array Is Sorted

Comparable Vs. Comparator in Java

Increasing Triplet Subsequence