From 46bc050f0444eeb36a17274544c5a184d021dd21 Mon Sep 17 00:00:00 2001 From: Vanshraj Tandon Date: Fri, 1 May 2026 03:21:44 +0530 Subject: [PATCH 1/4] Added linear Search implementation --- search/linear_searching.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 search/linear_searching.cpp diff --git a/search/linear_searching.cpp b/search/linear_searching.cpp new file mode 100644 index 00000000000..40cabdc3695 --- /dev/null +++ b/search/linear_searching.cpp @@ -0,0 +1,10 @@ +#include +using namespace std; + +int linearSearch(int arr[], int n, int key) { + for (int i = 0; i < n; i++) { + if (arr[i] == key) + return i; + } + return -1; +} \ No newline at end of file From a5a61102c54f729a63f8c86279c53c30380aa07d Mon Sep 17 00:00:00 2001 From: Vanshraj Tandon Date: Fri, 1 May 2026 03:37:03 +0530 Subject: [PATCH 2/4] Improved linear search with edge case handling and documentation --- search/linear_searching.cpp | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 search/linear_searching.cpp diff --git a/search/linear_searching.cpp b/search/linear_searching.cpp deleted file mode 100644 index 40cabdc3695..00000000000 --- a/search/linear_searching.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include -using namespace std; - -int linearSearch(int arr[], int n, int key) { - for (int i = 0; i < n; i++) { - if (arr[i] == key) - return i; - } - return -1; -} \ No newline at end of file From c5881a968ff01636b204767c23fb123e816bdc01 Mon Sep 17 00:00:00 2001 From: Vanshraj Tandon Date: Fri, 1 May 2026 03:46:47 +0530 Subject: [PATCH 3/4] improved linear search code --- search/linear_search.cpp | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/search/linear_search.cpp b/search/linear_search.cpp index 268aa52c3ac..abbe2d0014f 100644 --- a/search/linear_search.cpp +++ b/search/linear_search.cpp @@ -1,7 +1,8 @@ /** * \file - * \brief [Linear search - * algorithm](https://en.wikipedia.org/wiki/Linear_search) + * \brief Linear search algorithm implementation + * Time Complexity: O(n) + * Space Complexity: O(1) * * @author Unknown author * @author [Ritika Mukherjee](https://github.com/ritikaa17) @@ -11,32 +12,34 @@ #include /// for IO operations /** - * \brief [Algorithm implementation for linear search] + * \brief Algorithm implementation for linear search * \param [in] array array to search in * \param [in] size length of array * \param [in] key key value to search for * \returns index where the key-value occurs in the array - * \returns -1 if key-value not found + * \returns -1 if key-value not found or invalid input */ -int LinearSearch(int *array, int size, int key) { +int LinearSearch(int* array, int size, int key) { + // Handle invalid input + if (array == nullptr || size <= 0) { + return -1; + } + for (int i = 0; i < size; ++i) { if (array[i] == key) { return i; } } - /* We reach here only in case element is not present in array, return an - * invalid entry in that case*/ return -1; } /** * @brief Self-test implementations - * @returns void */ static void tests() { int size = 4; - int *array = new int[size]; + int* array = new int[size]; for (int i = 0; i < size; i++) { array[i] = i; } @@ -57,13 +60,15 @@ static void tests() { assert(LinearSearch(array, size, 1) == 1); assert(LinearSearch(array, size, 5) == 5); + // Edge case test + assert(LinearSearch(nullptr, 0, 5) == -1); + std::cout << "All tests have successfully passed!\n"; - delete[] array; // free memory up + delete[] array; } /** * @brief Main function - * @returns 0 on exit */ int main() { int mode = 0; @@ -83,10 +88,9 @@ int main() { std::cin >> size; } - int *array = new int[size]; + int* array = new int[size]; int key = 0; - // Input for the array elements std::cout << "Enter the array of " << size << " numbers: "; for (int i = 0; i < size; i++) { std::cin >> array[i]; @@ -103,7 +107,7 @@ int main() { } delete[] array; } else { - tests(); // run self-test implementations + tests(); } return 0; -} +} \ No newline at end of file From c7eb6c94b0e4e678de297a6ec080a4628d5ec832 Mon Sep 17 00:00:00 2001 From: Vanshraj Tandon Date: Sun, 3 May 2026 01:06:41 +0530 Subject: [PATCH 4/4] (LCA) implementation for Binary Tree --- trees/LCA.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 trees/LCA.cpp diff --git a/trees/LCA.cpp b/trees/LCA.cpp new file mode 100644 index 00000000000..c45de538525 --- /dev/null +++ b/trees/LCA.cpp @@ -0,0 +1,43 @@ +#include + +struct Node { + int data; + Node* left; + Node* right; + + Node(int val) : data(val), left(nullptr), right(nullptr) {} +}; + +bool find(Node* root, int val) { + if (!root) + return false; + if (root->data == val) + return true; + return find(root->left, val) || find(root->right, val); +} + +Node* lcaUtil(Node* root, int p, int q) { + if (!root) + return nullptr; + + if (root->data == p || root->data == q) + return root; + + Node* left = lcaUtil(root->left, p, q); + Node* right = lcaUtil(root->right, p, q); + + if (left && right) + return root; + + return left ? left : right; +} + +Node* LCA(Node* root, int p, int q) { + if (!root) + return nullptr; + + if (!find(root, p) || !find(root, q)) + return nullptr; + + return lcaUtil(root, p, q); +}