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