From 4689e4e80b479be25f7557d05818f5caa723aafa Mon Sep 17 00:00:00 2001
From: 3gg <3gg@shellblade.net>
Date: Wed, 5 Feb 2025 18:36:31 -0800
Subject: Initial commit.

---
 .../sorting_and_searching/01_merge_sorted_array.cc | 24 ++++++++++++++++++++++
 .../sorting_and_searching/02_first_bad_version.cc  | 21 +++++++++++++++++++
 2 files changed, 45 insertions(+)
 create mode 100644 top-interview-questions/easy/sorting_and_searching/01_merge_sorted_array.cc
 create mode 100644 top-interview-questions/easy/sorting_and_searching/02_first_bad_version.cc

(limited to 'top-interview-questions/easy/sorting_and_searching')

diff --git a/top-interview-questions/easy/sorting_and_searching/01_merge_sorted_array.cc b/top-interview-questions/easy/sorting_and_searching/01_merge_sorted_array.cc
new file mode 100644
index 0000000..9abb974
--- /dev/null
+++ b/top-interview-questions/easy/sorting_and_searching/01_merge_sorted_array.cc
@@ -0,0 +1,24 @@
+class Solution {
+public:
+    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
+        int i = m-1;
+        int j = n-1;
+        int k = n+m-1;
+
+        while ((i >= 0) && (j >= 0)) {
+            if (nums1[i] >= nums2[j]) {
+                nums1[k--] = nums1[i--];
+            } else {
+                nums1[k--] = nums2[j--];
+            }
+        }
+
+        while (i >= 0) {
+            nums1[k--] = nums1[i--];
+        }
+
+        while (j >= 0) {
+            nums1[k--] = nums2[j--];
+        }
+    }
+};
diff --git a/top-interview-questions/easy/sorting_and_searching/02_first_bad_version.cc b/top-interview-questions/easy/sorting_and_searching/02_first_bad_version.cc
new file mode 100644
index 0000000..15e2504
--- /dev/null
+++ b/top-interview-questions/easy/sorting_and_searching/02_first_bad_version.cc
@@ -0,0 +1,21 @@
+// The API isBadVersion is defined for you.
+// bool isBadVersion(int version);
+
+class Solution {
+public:
+    int FirstBad(int left, int right) {
+        if (left == right) {
+            return left;
+        }
+        const int mid = left + (right - left) / 2;
+        if (isBadVersion(mid)) {
+            return FirstBad(left, mid);
+        } else {
+            return FirstBad(mid+1, right);
+        }
+    }
+
+    int firstBadVersion(int n) {
+        return FirstBad(1, n);
+    }
+};
-- 
cgit v1.2.3