diff --git a/combination-sum/PDKhan.cpp b/combination-sum/PDKhan.cpp new file mode 100644 index 000000000..c94e1ac64 --- /dev/null +++ b/combination-sum/PDKhan.cpp @@ -0,0 +1,27 @@ +class Solution { + public: + void backtrack(vector& candidates, int target, int index, vector& curr, vector>& result){ + if(target < 0) + return; + + if(target == 0){ + result.push_back(curr); + return; + } + + for(int i = index; i < candidates.size(); i++){ + curr.push_back(candidates[i]); + backtrack(candidates, target-candidates[i], i, curr, result); + curr.pop_back(); + } + } + + vector> combinationSum(vector& candidates, int target) { + vector> result; + vector curr; + + backtrack(candidates, target, 0, curr, result); + + return result; + } + }; diff --git a/decode-ways/PDKhan.cpp b/decode-ways/PDKhan.cpp new file mode 100644 index 000000000..d74b01810 --- /dev/null +++ b/decode-ways/PDKhan.cpp @@ -0,0 +1,28 @@ +class Solution { + public: + int numDecodings(string s) { + int n = s.length(); + + if(n == 0 || s[0] == '0') + return 0; + + int next = 1; + int nextnext = 1; + int curr = 0; + + for(int i = n - 1; i >= 0; i--){ + if(s[i] == '0') + curr = 0; + else{ + curr = next; + if(i < n - 1 && (s[i] == '1' || (s[i] == '2' && s[i+1] >= '0' && s[i+1] <= '6'))) + curr += nextnext; + } + + nextnext = next; + next = curr; + } + + return curr; + } + }; diff --git a/maximum-subarray/PDKhan.cpp b/maximum-subarray/PDKhan.cpp new file mode 100644 index 000000000..d8086327a --- /dev/null +++ b/maximum-subarray/PDKhan.cpp @@ -0,0 +1,19 @@ +class Solution { + public: + int maxSubArray(vector& nums) { + int cur = nums[0]; + int max = nums[0]; + + for(int i = 1; i < nums.size(); i++){ + if(nums[i] > cur + nums[i]) + cur = nums[i]; + else + cur = cur + nums[i]; + + if(max < cur) + max = cur; + } + + return max; + } + }; diff --git a/number-of-1-bits/PDKhan.cpp b/number-of-1-bits/PDKhan.cpp new file mode 100644 index 000000000..83ee61c8a --- /dev/null +++ b/number-of-1-bits/PDKhan.cpp @@ -0,0 +1,15 @@ +class Solution { + public: + int hammingWeight(int n) { + int cnt = 0; + + while(n){ + if(n & 1 == 1) + cnt++; + + n >>= 1; + } + + return cnt; + } + }; diff --git a/valid-palindrome/PDKhan.cpp b/valid-palindrome/PDKhan.cpp new file mode 100644 index 000000000..74c66638e --- /dev/null +++ b/valid-palindrome/PDKhan.cpp @@ -0,0 +1,20 @@ +class Solution { + public: + bool isPalindrome(string s) { + int left = 0; + int right = s.length()-1; + + while(left < right){ + while(left < right && !isalnum(s[left])) left++; + while(left < right && !isalnum(s[right])) right--; + + if(tolower(s[left]) != tolower(s[right])) + return false; + + left++; + right--; + } + + return true; + } + };