File tree Expand file tree Collapse file tree 5 files changed +234
-0
lines changed Expand file tree Collapse file tree 5 files changed +234
-0
lines changed Original file line number Diff line number Diff line change 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+
Original file line number Diff line number Diff line change 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+
Original file line number Diff line number Diff line change 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+
Original file line number Diff line number Diff line change 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+
Original file line number Diff line number Diff line change 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+
You can’t perform that action at this time.
0 commit comments