From 99aadbbd61450d77f333d92f8e2366e672995618 Mon Sep 17 00:00:00 2001 From: PDKhan Date: Wed, 18 Jun 2025 08:33:20 -0700 Subject: [PATCH 1/5] Same Tree solution --- same-tree/PDKhan.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 same-tree/PDKhan.cpp diff --git a/same-tree/PDKhan.cpp b/same-tree/PDKhan.cpp new file mode 100644 index 000000000..36588c269 --- /dev/null +++ b/same-tree/PDKhan.cpp @@ -0,0 +1,13 @@ +class Solution { + public: + bool isSameTree(TreeNode* p, TreeNode* q) { + if(!p && !q) + return true; + else if(!p || !q) + return false; + else if(p->val != q->val) + return false; + + return isSameTree(p->left, q->left) && isSameTree(p->right, q->right); + } + }; From 9498bbaa531389586e072df10d0938b05523ad66 Mon Sep 17 00:00:00 2001 From: PDKhan Date: Wed, 18 Jun 2025 08:33:43 -0700 Subject: [PATCH 2/5] Remove Nth Node From End of List solution --- remove-nth-node-from-end-of-list/PDKhan.cpp | 29 +++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 remove-nth-node-from-end-of-list/PDKhan.cpp diff --git a/remove-nth-node-from-end-of-list/PDKhan.cpp b/remove-nth-node-from-end-of-list/PDKhan.cpp new file mode 100644 index 000000000..baf85b25a --- /dev/null +++ b/remove-nth-node-from-end-of-list/PDKhan.cpp @@ -0,0 +1,29 @@ +class Solution { + public: + ListNode* removeNthFromEnd(ListNode* head, int n) { + ListNode* prev = NULL; + ListNode* curr = head; + ListNode* next = head; + + for(int i = 0; next && i < n; i++) + next = next->next; + + while(next){ + if(prev == nullptr) + prev = head; + else + prev = prev->next; + curr = curr->next; + next = next->next; + } + + if(prev == nullptr) + head = curr->next; + else + prev->next = curr->next; + + delete(curr); + + return head; + } + }; From 2adfbc064bbc277d65646cea9ecfbd18ab48f901 Mon Sep 17 00:00:00 2001 From: PDKhan Date: Wed, 18 Jun 2025 08:34:11 -0700 Subject: [PATCH 3/5] Number of Connected Components solution --- .../PDKhan.cpp | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 number-of-connected-components-in-an-undirected-graph/PDKhan.cpp diff --git a/number-of-connected-components-in-an-undirected-graph/PDKhan.cpp b/number-of-connected-components-in-an-undirected-graph/PDKhan.cpp new file mode 100644 index 000000000..4fd22ad2c --- /dev/null +++ b/number-of-connected-components-in-an-undirected-graph/PDKhan.cpp @@ -0,0 +1,37 @@ +class Solution { + public: + /** + * @param n: the number of vertices + * @param edges: the edges of undirected graph + * @return: the number of connected components + */ + void dfs(int curr, vector>& graph, vector& visited){ + visited[curr] = true; + + for(int i = 0; i < graph[curr].size(); i++){ + if(visited[graph[curr][i]] == false) + dfs(graph[curr][i], graph, visited); + } + } + + int countComponents(int n, vector> &edges) { + // write your code here + vector visited(n, 0); + vector> graph (n); + int cnt = 0; + + for(int i = 0; i < edges.size(); i++){ + graph[edges[i][0]].push_back(edges[i][1]); + graph[edges[i][1]].push_back(edges[i][0]); + } + + for(int i = 0; i < n; i++){ + if(visited[i] == false){ + dfs(i, graph, visited); + cnt++; + } + } + + return cnt; + } + }; From 31ccab76523ab1e06aab9c7ef2902b3cc678b3dc Mon Sep 17 00:00:00 2001 From: PDKhan Date: Wed, 18 Jun 2025 08:34:32 -0700 Subject: [PATCH 4/5] Non Overlapping Invervals solution --- non-overlapping-intervals/PDKhan.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 non-overlapping-intervals/PDKhan.cpp diff --git a/non-overlapping-intervals/PDKhan.cpp b/non-overlapping-intervals/PDKhan.cpp new file mode 100644 index 000000000..682d0f291 --- /dev/null +++ b/non-overlapping-intervals/PDKhan.cpp @@ -0,0 +1,18 @@ +class Solution { +public: + int eraseOverlapIntervals(vector>& intervals) { + sort(intervals.begin(), intervals.end(), [](const vector& a, const vector& b){ return a[1] < b[1];}); + + int result = 0; + int end = intervals[0][1]; + + for(int i = 1; i < intervals.size(); i++){ + if(intervals[i][0] < end) + result++; + else + end = intervals[i][1]; + } + + return result; + } +}; From daa30537bf810759a0e50df7df9df8497ca865de Mon Sep 17 00:00:00 2001 From: PDKhan Date: Wed, 18 Jun 2025 08:34:55 -0700 Subject: [PATCH 5/5] Serialize and Deserialize Binay Tree solution --- .../PDKhan.cpp | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 serialize-and-deserialize-binary-tree/PDKhan.cpp diff --git a/serialize-and-deserialize-binary-tree/PDKhan.cpp b/serialize-and-deserialize-binary-tree/PDKhan.cpp new file mode 100644 index 000000000..c075f1a29 --- /dev/null +++ b/serialize-and-deserialize-binary-tree/PDKhan.cpp @@ -0,0 +1,69 @@ +class Codec { +public: + // Encodes a tree to a single string. + string serialize(TreeNode* root) { + string result; + + if(root == nullptr) + return result; + + queue q; + + q.push(root); + + while(!q.empty()){ + TreeNode* curr = q.front(); + + q.pop(); + + if(curr){ + result += to_string(curr->val) + ","; + q.push(curr->left); + q.push(curr->right); + }else{ + result += "NULL,"; + } + } + + return result; + } + // Decodes your encoded data to tree. + TreeNode* deserialize(string data) { + if(!data.size()) + return nullptr; + + queue q; + vector values; + size_t prev = 0; + size_t pos = data.find(",", prev); + + while(pos != string::npos){ + values.push_back(data.substr(prev, pos - prev)); + prev = pos + 1; + pos = data.find(",", prev); + } + + int idx = 0; + TreeNode* root = new TreeNode(stoi(values[idx++])); + q.push(root); + + while(!q.empty()){ + int left = idx++; + int right = idx++; + TreeNode* curr = q.front(); + q.pop(); + + if(left < values.size() && values[left] != "NULL"){ + curr->left = new TreeNode(stoi(values[left])); + q.push(curr->left); + } + + if(right < values.size() && values[right] != "NULL"){ + curr->right = new TreeNode(stoi(values[right])); + q.push(curr->right); + } + } + + return root; + } +};