From 7254a1cc034272fbb1f70157130460fc96236e89 Mon Sep 17 00:00:00 2001 From: rvuyyuru7 Date: Tue, 18 Nov 2025 19:08:43 -0600 Subject: [PATCH 1/2] Competitive-Coding-1 Complete --- Problem1.java | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Problem1.java b/Problem1.java index 8b137891..b047b7d7 100644 --- a/Problem1.java +++ b/Problem1.java @@ -1 +1,35 @@ +// Find missing number in a sorted array with numbers in range of 1 to N. +// Time Complexity : O(logN) +// Space Complexity : O(1) +// Did this code successfully run on Leetcode : Yes +// Any problem you faced while coding this : No +class Solution { + public int search(int[] arr) { + int left = 0; + int right = arr.length - 1; + while (left <= right) { + int mid = left + (right - left) / 2; + // The number at an index should be equal to index + 1 + if (arr[mid] != mid + 1) { + // Missing number is in the left side of mid + right = mid - 1; + } else { + // Missing number is in the right side of mid + left = mid + 1; + } + } + return left + 1; // left pointer always stops one index before the missing number + } + public static void main(String[] args) { + Solution ob = new Solution(); + int[] arr = new int[] {1, 2, 3, 5, 6, 7, 8}; + System.out.println(ob.search(arr)); + int[] arr1 = new int[] {1, 2, 4, 5, 6, 7, 8, 9}; + System.out.println(ob.search(arr1)); + int[] arr3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9}; + System.out.println(ob.search(arr3)); + int[] arr4 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; + System.out.println(ob.search(arr4)); + } +} \ No newline at end of file From c26cab490655e457acee622df2523c013f26d70a Mon Sep 17 00:00:00 2001 From: rvuyyuru7 Date: Tue, 18 Nov 2025 20:22:47 -0600 Subject: [PATCH 2/2] Corrected the comment --- Problem1.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Problem1.java b/Problem1.java index b047b7d7..afd7dafe 100644 --- a/Problem1.java +++ b/Problem1.java @@ -18,18 +18,20 @@ public int search(int[] arr) { left = mid + 1; } } - return left + 1; // left pointer always stops one index before the missing number + // Left pointer always stops at the index where missing number should be. + // Number at the index should be index + 1. + return left + 1; } public static void main(String[] args) { Solution ob = new Solution(); int[] arr = new int[] {1, 2, 3, 5, 6, 7, 8}; - System.out.println(ob.search(arr)); + System.out.println(ob.search(arr)); // returns 4 int[] arr1 = new int[] {1, 2, 4, 5, 6, 7, 8, 9}; - System.out.println(ob.search(arr1)); + System.out.println(ob.search(arr1)); // retuns 3 int[] arr3 = new int[] {2, 3, 4, 5, 6, 7, 8, 9}; - System.out.println(ob.search(arr3)); + System.out.println(ob.search(arr3)); // returns 1 int[] arr4 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; - System.out.println(ob.search(arr4)); + System.out.println(ob.search(arr4)); // returns 9 } } \ No newline at end of file