Skip to content

Commit 2226812

Browse files
authored
Merge pull request #1285 from Qualifor/master
471-Week 08
2 parents 67e98c2 + 64b1021 commit 2226812

File tree

5 files changed

+100
-0
lines changed

5 files changed

+100
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public int rob(int[] nums) {
3+
int preTwo = 0;
4+
int pre = 0;
5+
int max = pre;
6+
7+
for (int i = 0; i < nums.length; i++) {
8+
max = Math.max(preTwo + nums[i], pre);
9+
preTwo = pre;
10+
pre = max;
11+
}
12+
13+
return max;
14+
}
15+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public int lengthOfLIS(int[] nums) {
3+
int tail[] = new int[nums.length];
4+
int size = 0;
5+
6+
for (int num : nums) {
7+
8+
int i = 0, j = size;
9+
while (i < j) {
10+
int mid = i + ((j - i) >> 1);
11+
12+
if (tail[mid] < num) {
13+
i = mid + 1;
14+
} else {
15+
j = mid;
16+
}
17+
}
18+
tail[i] = num;
19+
if (i == size) {
20+
size++;
21+
}
22+
}
23+
24+
return size;
25+
}
26+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public int uniquePaths(int m, int n) {
3+
int dp[] = new int[n];
4+
Arrays.fill(dp, 1);
5+
6+
for (int i = 1; i < m; i++) {
7+
for (int j = 1; j < n; j++) {
8+
dp[j] += dp[j-1];
9+
}
10+
}
11+
12+
return dp[n-1];
13+
}
14+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
public int minPathSum(int[][] grid) {
3+
int m = grid.length;
4+
int n = grid[0].length;
5+
int dp[] = new int[n];
6+
7+
for (int i = 0; i < grid[0].length; i++) {
8+
dp[i] = i == 0 ? grid[0][i] : dp[i - 1] + grid[0][i];
9+
}
10+
11+
for (int i = 1; i < m; i++) {
12+
dp[0] = dp[0] + grid[i][0];
13+
for (int j = 1; j < n; j++) {
14+
dp[j] = Math.min(dp[j-1], dp[j]) + grid[i][j];
15+
}
16+
}
17+
return dp[n - 1];
18+
}
19+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public int numDecodings(String s) {
3+
if (s.length() == 0) {
4+
return 0;
5+
}
6+
7+
int dp[] = new int[s.length() + 1];
8+
dp[0] = 1;
9+
dp[1] = s.charAt(0) == '0' ? 0 : 1;
10+
11+
for (int i = 2; i <= s.length(); i++) {
12+
int first = Integer.valueOf(s.substring(i - 1, i));
13+
int second = Integer.valueOf(s.substring(i - 2, i));
14+
15+
if (first >= 1 && first <= 9) {
16+
dp[i] += dp[i - 1];
17+
}
18+
19+
if (second >= 10 && second <= 26) {
20+
dp[i] += dp[i - 2];
21+
}
22+
}
23+
24+
return dp[s.length()];
25+
}
26+
}

0 commit comments

Comments
 (0)