Skip to content

Commit fb9b463

Browse files
authored
Merge pull request DaleStudy#1208 from PDKhan/main
[PDKhan] WEEK 02 solutions
2 parents 78370c1 + cc44155 commit fb9b463

File tree

5 files changed

+115
-0
lines changed

5 files changed

+115
-0
lines changed

3sum/PDKhan.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> threeSum(vector<int>& nums) {
4+
vector<vector<int>> result;
5+
sort(nums.begin(), nums.end());
6+
7+
for(int i = 0; i < nums.size(); i++){
8+
if(i > 0 && nums[i] == nums[i-1])
9+
continue;
10+
11+
int left = i + 1;
12+
int right = nums.size() - 1;
13+
14+
while(left < right){
15+
int sum = nums[i] + nums[left] + nums[right];
16+
17+
if(sum == 0){
18+
result.push_back({nums[i], nums[left], nums[right]});
19+
left++;
20+
right--;
21+
22+
while(left < right && nums[left] == nums[left-1])
23+
left++;
24+
25+
while(left < right && nums[right] == nums[right+1])
26+
right--;
27+
}else if(sum < 0)
28+
left++;
29+
else
30+
right--;
31+
}
32+
}
33+
34+
return result;
35+
}
36+
};

climbing-stairs/PDKhan.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public:
3+
int climbStairs(int n) {
4+
if(n < 2)
5+
return 1;
6+
7+
int curr = 0;
8+
int prev1 = 1;
9+
int prev2 = 1;
10+
11+
for(int i = 2; i <= n; i++){
12+
curr = prev1 + prev2;
13+
prev2 = prev1;
14+
prev1 = curr;
15+
}
16+
17+
return curr;
18+
}
19+
};
20+
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public:
3+
vector<int> productExceptSelf(vector<int>& nums) {
4+
int n = nums.size();
5+
vector<int> result(n, 1);
6+
7+
int left = 1;
8+
9+
for(int i = 0; i < n; i++){
10+
result[i] = left;
11+
left *= nums[i];
12+
}
13+
14+
int right = 1;
15+
for(int i = n - 1; i >= 0; i--){
16+
result[i] *= right;
17+
right *= nums[i];
18+
}
19+
20+
return result;
21+
}
22+
};

valid-anagram/PDKhan.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
bool isAnagram(string s, string t) {
4+
unordered_map<char, int> map;
5+
6+
if(s.length() != t.length())
7+
return false;
8+
9+
for(int i = 0; i < s.length(); i++)
10+
map[s[i]]++;
11+
12+
for(int i = 0; i < t.length(); i++){
13+
if(map[t[i]] == 0)
14+
return false;
15+
16+
map[t[i]]--;
17+
}
18+
19+
return true;
20+
}
21+
};
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public:
3+
bool search(TreeNode* root, long min, long max){
4+
if(root == NULL)
5+
return true;
6+
7+
if(root->val <= min || root->val >= max)
8+
return false;
9+
10+
return search(root->left, min, root->val) && search(root->right, root->val, max);
11+
}
12+
13+
bool isValidBST(TreeNode* root) {
14+
return search(root, (long)INT_MIN-1, (long)INT_MAX+1);
15+
}
16+
};

0 commit comments

Comments
 (0)