Skip to content

Commit 8164e3c

Browse files
committedJun 2, 2017
519/592 problems solved. amazon.com interview ahead
1 parent e22be69 commit 8164e3c

File tree

5 files changed

+320
-219
lines changed

5 files changed

+320
-219
lines changed
 

‎README.md

+222-219
Large diffs are not rendered by default.

‎source-code/Array_Nesting.cpp

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
int dfs(int indx, vector<int>& arr, vector<bool>& visited) {
3+
if(visited[indx]) { return 0; }
4+
visited[indx] = true;
5+
return 1 + dfs(arr[indx], arr, visited);
6+
}
7+
public:
8+
int arrayNesting(vector<int>& nums) {
9+
int n = (int) nums.size();
10+
vector<bool> visited(n, false);
11+
int result = 0;
12+
for(int i = 0; i < n; i++) {
13+
if(!visited[i]) {
14+
result = max(result, dfs(i, nums, visited));
15+
}
16+
}
17+
return result;
18+
}
19+
};

‎source-code/Optimal_Division.cpp

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public:
3+
string optimalDivision(vector<int>& nums) {
4+
string result;
5+
if(nums.empty()) {
6+
return result;
7+
}
8+
result = to_string(nums[0]);
9+
if(nums.size() == 1) {
10+
return result;
11+
}
12+
if(nums.size() == 2) {
13+
return result + "/" + to_string(nums[1]);
14+
}
15+
result += "/(" + to_string(nums[1]);
16+
for(int i = 2; i < (int)nums.size(); ++i) {
17+
result += "/" + to_string(nums[i]);
18+
}
19+
result += ")";
20+
return result;
21+
}
22+
};

‎source-code/Permutation_in_String.cpp

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution {
2+
const static int MAX = 26;
3+
public:
4+
bool checkInclusion(string s1, string s2) {
5+
vector<int> freq(MAX, 0);
6+
int n = (int)s1.length();
7+
for(int i = 0; i < n; i++) {
8+
freq[s1[i] - 'a']++;
9+
}
10+
int i = 0, k = 0;
11+
int m = (int)s2.length();
12+
while(k < m) {
13+
freq[s2[k] - 'a']--;
14+
if(freq[s2[k] - 'a'] < 0) {
15+
while(i <= k and freq[s2[k] - 'a'] < 0) {
16+
freq[s2[i] - 'a']++;
17+
i++;
18+
}
19+
}
20+
if(k - i + 1 == n) {
21+
return true;
22+
}
23+
k++;
24+
}
25+
return false;
26+
}
27+
};

‎source-code/Remove_Boxes.cpp

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution {
2+
public:
3+
int removeBoxes(vector<int>& boxes) {
4+
const int n = (int)boxes.size();
5+
if(n == 0) return 0;
6+
// vector<vector<vector<int>>> dp(n + 1, vector<vector<int>>(n + 1, vector<int>(n + 1, 0))); // MLE
7+
int dp[n + 1][n + 1][n + 1] = {0};
8+
for(int i = 0; i < n; i++) {
9+
for(int k = 1; k <= i; k++) {
10+
dp[i][i][k] = (k + 1) * (k + 1);
11+
}
12+
}
13+
14+
for(int len = 1; len <= n; len++) {
15+
for(int i = 0; i <= n - len; i++) {
16+
int j = i + len - 1;
17+
for(int k = 0; k <= i; k++) {
18+
dp[i][j][k] = (k + 1) * (k + 1) + dp[i + 1][j][0];
19+
for(int l = i + 1; l <= j; l++) {
20+
if(boxes[i] == boxes[l]) {
21+
dp[i][j][k] = max(dp[i][j][k], dp[i + 1][l - 1][0] + dp[l][j][k + 1]);
22+
}
23+
}
24+
}
25+
}
26+
}
27+
28+
return dp[0][n - 1][0];
29+
}
30+
};

0 commit comments

Comments
 (0)
Please sign in to comment.