Skip to content

Commit a5005a3

Browse files
authored
Merge pull request #2099 from ys-han00/main
[ys-han00] WEEK 03 solutions
2 parents 58317e1 + 6ad4240 commit a5005a3

File tree

5 files changed

+234
-0
lines changed

5 files changed

+234
-0
lines changed

combination-sum/ys-han00.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
4+
vector<vector<int>> ans;
5+
queue<pair<int, vector<int>>> que;
6+
vector<int> comb;
7+
int sum, num;
8+
9+
sort(candidates.begin(), candidates.end());
10+
11+
for(int i = 0; i < candidates.size(); i++) {
12+
num = candidates[i];
13+
if(num > target)
14+
continue;
15+
que.push({num, vector<int> ({num})});
16+
}
17+
18+
while(!que.empty()) {
19+
sum = que.front().first;
20+
comb = que.front().second;
21+
que.pop();
22+
23+
if(sum == target) {
24+
ans.push_back(comb);
25+
continue;
26+
}
27+
28+
for(int i = 0; i < candidates.size(); i++) {
29+
num = candidates[i];
30+
if(sum + num <= target && comb[comb.size() - 1] <= num) {
31+
comb.push_back(num);
32+
que.push({sum + num, comb});
33+
comb.pop_back();
34+
}
35+
}
36+
}
37+
38+
return ans;
39+
}
40+
};
41+

decode-ways/ys-han00.cpp

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
// class Solution {
2+
// public:
3+
// int numDecodings(string s) {
4+
// int n = s.size(), idx, ways, two;
5+
6+
// queue<int> que;
7+
// vector<int> memo(n, 0);
8+
9+
// if(s[0] != '0') {
10+
// que.push(0);
11+
// memo[0] = 1;
12+
// }
13+
14+
// if(n >= 2) {
15+
// two = (s[0] - '0') * 10 + (s[1] - '0');
16+
// if(10 <= two && two <= 26) {
17+
// que.push(1);
18+
// memo[1] = 1;
19+
// }
20+
// }
21+
22+
// while(!que.empty()) {
23+
// idx = que.front();
24+
// que.pop();
25+
26+
// ways = memo[idx];
27+
28+
// if(idx + 1 < n && s[idx + 1] != '0') {
29+
// if(memo[idx + 1] == 0)
30+
// que.push(idx + 1);
31+
// memo[idx + 1] += ways;
32+
// }
33+
34+
// if(idx + 2 < n) {
35+
// two = (s[idx + 1] - '0') * 10 + (s[idx + 2] - '0');
36+
// if(10 <= two && two <= 26) {
37+
// if(memo[idx + 2] == 0)
38+
// que.push(idx + 2);
39+
// memo[idx + 2] += ways;
40+
// }
41+
// }
42+
// }
43+
44+
// return memo[n - 1];
45+
// }
46+
// };
47+
48+
// class Solution {
49+
// public:
50+
// int numDecodings(string s) {
51+
// vector<int> dp(s.size() + 1, 1);
52+
53+
// for(int i = s.size() - 1; i >=0; i--) {
54+
// if(s[i] == '0') {
55+
// dp[i] = 0;
56+
// continue;
57+
// }
58+
59+
// dp[i] = dp[i + 1];
60+
// if(i + 1 < s.size() && (s[i] - '0') * 10 + (s[i + 1] - '0') < 27)
61+
// dp[i] += dp[i + 2];
62+
// }
63+
64+
// return dp[0];
65+
// }
66+
// };
67+
68+
class Solution {
69+
public:
70+
int numDecodings(string s) {
71+
int cur = 1, nxt = 0, tmp;
72+
73+
for(int i = s.size() - 1; i >=0; i--) {
74+
if(s[i] == '0') {
75+
nxt = cur;
76+
cur = 0;
77+
continue;
78+
}
79+
tmp = nxt;
80+
nxt = cur;
81+
if(i + 1 < s.size() && (s[i] - '0') * 10 + (s[i + 1] - '0') < 27)
82+
cur += tmp;
83+
}
84+
85+
return cur;
86+
}
87+
};
88+

maximum-subarray/ys-han00.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// class Solution {
2+
// public:
3+
// int maxSubArray(vector<int>& nums) {
4+
// vector<int> dp(nums.size(), 0x8000000);
5+
// int ans = 0x80000000;
6+
7+
// dp[0] = nums[0];
8+
// ans = max(ans, dp[0]);
9+
10+
// for(int i = 1; i < nums.size(); i++) {
11+
// dp[i] = max(dp[i - 1] + nums[i], nums[i]);
12+
// ans = max(ans, dp[i]);
13+
// }
14+
15+
// return ans;
16+
// }
17+
// };
18+
19+
class Solution {
20+
public:
21+
int maxSubArray(vector<int>& nums) {
22+
int ans = 0x80000000, sum;
23+
24+
sum = nums[0];
25+
ans = sum;
26+
for(int i = 1; i < nums.size(); i++) {
27+
sum = max(sum + nums[i], nums[i]);
28+
ans = max(ans, sum);
29+
}
30+
31+
return ans;
32+
}
33+
};
34+

number-of-1-bits/ys-han00.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public:
3+
int hammingWeight(int n) {
4+
int ans = 0;
5+
6+
while(n) {
7+
if(n % 2 == 1)
8+
ans++;
9+
n /= 2;
10+
}
11+
12+
return ans;
13+
}
14+
};
15+

valid-palindrome/ys-han00.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// class Solution {
2+
// public:
3+
// bool isPalindrome(string s) {
4+
// string new_s;
5+
6+
// for(char c : s)
7+
// if(isalpha(c) || isdigit(c))
8+
// new_s += tolower(c);
9+
10+
// int left = 0, right = new_s.size() - 1;
11+
12+
// while(left < right) {
13+
// if(new_s[left] != new_s[right])
14+
// return false;
15+
// left++;
16+
// right--;
17+
// }
18+
19+
// return true;
20+
// }
21+
// };
22+
23+
class Solution {
24+
public:
25+
bool isPalindrome(string s) {
26+
int left = 0, right = s.size() - 1;
27+
28+
while(left < right) {
29+
if(!isalnum(s[left])) {
30+
left++;
31+
continue;
32+
}
33+
if(!isalnum(s[right])) {
34+
right--;
35+
continue;
36+
}
37+
38+
if(isdigit(s[left]) && isdigit(s[right])) {
39+
if(s[left] != s[right]) {
40+
return false;
41+
}
42+
}
43+
else if(isalpha(s[left]) && isalpha(s[right])) {
44+
if(tolower(s[left]) != tolower(s[right]))
45+
return false;
46+
}
47+
else
48+
return false;
49+
left++;
50+
right--;
51+
}
52+
53+
return true;
54+
}
55+
};
56+

0 commit comments

Comments
 (0)