Assignments - DSA

TLE ka koi ilaz noi

For sorted Arrays - O(lgn)
class Solution {
public:
    
    vector<int> twoSum(vector<int>& numbers, int target) {
        int sum;
        int s= 0; int e = numbers.size()-1;
        while(s <= e) {
            sum = numbers[s] + numbers[e];
            if(sum == target) return {s+1, e+1};
            if(sum > target) e--;
            else s++;
        }
        return {};
    }
};
For unSorted Arrays - O(n)
class Solution {
public:
    
    void searchSecElem(vector<int>& nums, int fElem, int& j, int s, int e, int target) {
        if(s>=e) {
            if(fElem + nums[s] == target) j = s;
            return;
        }
        int mid = s+(e-s)/2;
        searchSecElem(nums, fElem, j, s, mid, target);
        searchSecElem(nums, fElem, j, mid+1, e, target);
    }

    vector<int> twoSum(vector<int>& numbers, int target) {
        int j = -1;
        vector<int> res(2, -1);
        for(int i = 1; i < numbers.size(); i++) {
            searchSecElem(numbers, numbers[i-1], j, i, numbers.size()-1, target);
            if(j!=-1) {
                res[0] = i-1+1;
                res[1] = j+1;
                return res;
            }
        }
        return res;
    }
};

class Solution {
public:
    
    void searchMinimum(vector<int>& nums, int& min, int s, int e) {
        if(s >= e) {
            if(min > nums[s]) min = nums[s];
            return;
        }
        
        int mid = s+(e-s)/2;
        searchMinimum(nums, min, s, mid);
        searchMinimum(nums, min, mid+1, e);
    }

    int findMin(vector<int>& nums) {

        int min = INT_MAX;
        searchMinimum(nums, min, 0, nums.size()-1);
        return min;
        
    }
};

Divide & Conquer (Modified - quite easy) - O(nlgn)
Divide & Conquer - O(nlgn)
Kadane's Algorithm - O(n)

Last updated

Was this helpful?