From aef95716aa5f94dcdd0a8414837af643c395273d Mon Sep 17 00:00:00 2001 From: restacksyj Date: Tue, 2 Sep 2025 03:55:22 -0400 Subject: [PATCH] Completed Problems --- Problem1.cpp | 34 +++++++++++++++ Problem2.cpp | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++ a.out | Bin 0 -> 49992 bytes 3 files changed, 150 insertions(+) create mode 100755 a.out diff --git a/Problem1.cpp b/Problem1.cpp index 8b137891..82b6a5dc 100644 --- a/Problem1.cpp +++ b/Problem1.cpp @@ -1 +1,35 @@ +// Problem - Find missing number in sorted array of natural numbers +// Time Complexity : O(logn) +// Space Complexity : O(1) +// Did this code successfully run on Leetcode : Yes +// Any problem you faced while coding this : No +// Your code here along with comments explaining your approach +// 1. We use binary search to reduce our complexity from O(n) to O(logn) +// 2. We use mid+1 index to check whether we are on the correct index +// 3. If we are that means left half can totally be eliminated, and move towards +// right half + +#include +using namespace std; + +class Solution { +public: + int missingNumber(vector &arr) { + int n = (int)arr.size(); + int l = 0; + int h = n - 1; + + while (l <= h) { + int mid = l + (h - l) / 2; + if (arr[mid] == mid + 1) { + // eliminate the left half + l = mid + 1; + } else { + h = mid - 1; + } + } + + return l + 1; + } +}; diff --git a/Problem2.cpp b/Problem2.cpp index 8b137891..896d0371 100644 --- a/Problem2.cpp +++ b/Problem2.cpp @@ -1 +1,117 @@ +// Problem - Design Min heap +// Time Complexity : O(logn) +// Space Complexity : O(n) +// Did this code successfully run on Leetcode : Yes +// Any problem you faced while coding this : No +#include +#include +using namespace std; + +class MinHeap { + +private: + vector storage; + int size; + int capacity; + int parent(int i) { return (i - 1) / 2; } + int leftChild(int i) { return 2 * i + 1; } + int rightChild(int i) { return 2 * i + 2; } + +public: + MinHeap(int capacity) { + size = 0; + this->capacity = capacity; + storage.resize(capacity); + } + + void push(int val) { + if (size == capacity) { + return; + } + storage[size] = val; + size++; + heapifyUp(size - 1); + } + + void pop() { + if (size <= 0) { + return; + } + // replace root with the last level leaf node + storage[0] = storage[size - 1]; + size--; + heapifyDown(0); + } + + int top() { + if (size <= 0) { + return -1; + } + return storage[0]; + } + + void heapifyUp(int i) { + int parentIndex = this->parent(i); + if (i > 0 && storage[parentIndex] > storage[i]) { + swap(storage[parentIndex], storage[i]); + heapifyUp(parentIndex); + } + } + + void heapifyUpIterative(int i) { + while (i > 0 && storage[parent(i)] > storage[i]) { + swap(storage[parent(i)], storage[i]); + i = parent(i); + } + } + + void heapifyDown(int i) { + int smallest = i; + int leftC = this->leftChild(i); + int rightC = this->rightChild(i); + if (leftC < this->size && storage[smallest] > storage[leftC]) { + smallest = leftC; + } + if (rightC < this->size && storage[smallest] > storage[rightC]) { + smallest = rightC; + } + + if (smallest != i) { // base condition for recursion + swap(storage[smallest], storage[i]); + heapifyDown(smallest); + } + } +}; + +int main() { + MinHeap pq = MinHeap(10); + priority_queue, greater> opq; + pq.push(10); + pq.push(70); + pq.push(9); + pq.push(1); + pq.push(91); + pq.push(84); + pq.pop(); + pq.pop(); + pq.pop(); + cout << pq.top() << endl; + pq.push(36); + cout << pq.top() << endl; + + cout << "-----" << endl; + opq.push(10); + opq.push(70); + opq.push(9); + opq.push(1); + opq.push(91); + opq.push(84); + opq.pop(); + opq.pop(); + opq.pop(); + cout << opq.top() << endl; + opq.push(36); + cout << opq.top() << endl; + return 0; +} diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..b29a6e57c4846e69410e1de08fcec641b404f86c GIT binary patch literal 49992 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 literal 0 HcmV?d00001