Skip to content

Commit 860042f

Browse files
committed
20191215
1 parent d58778f commit 860042f

17 files changed

+111
-20
lines changed

code/lc145.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ public class TreeNode {
2020
}
2121
public List<Integer> postorderTraversal(TreeNode root) {
2222
ArrayList<Integer> res = new ArrayList();
23-
if(root==null)
24-
return res;
23+
if(root==null) return res;
2524
Stack<TreeNode> st = new Stack();
2625
while(!st.isEmpty()||root!=null){
2726
while(root!=null) {

code/lc152.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public static int maxProduct(int[] nums) {
1919
max = Math.max(nums[i],nums[i]*max);
2020
min = Math.min(nums[i],nums[i]*min);
2121
}else{
22-
int temp = max; //注意maxh会被替换,先保存下
22+
int temp = max; //注意max会被替换,先保存下
2323
max = Math.max(nums[i],nums[i]*min);
2424
min = Math.min(nums[i],nums[i]*temp);
2525
}

code/lc221.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ public static void main(String[] args) {
1313
System.out.println(maximalSquare(matrix));
1414
}
1515
public static int maximalSquare(char[][] matrix) {
16-
if(matrix.length==0)
17-
return 0;
16+
if(matrix.length==0) return 0;
1817
int[][] dp = new int[matrix.length][matrix[0].length];
1918
int max = 0;
2019
for (int i = 0; i < matrix.length ; i++) {

code/lc239.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
* 思路:用双向队列,保证队列里是递减的。单调队列,好好学习一下。
88
* Tips:与lc84做比较,84是递增栈
99
*/
10-
import java.util.ArrayDeque;
1110
import java.util.Deque;
11+
import java.util.LinkedList;
1212

1313
public class lc239 {
1414
public static void main(String[] args) {
@@ -25,7 +25,7 @@ public static int[] maxSlidingWindow(int[] nums, int k) {
2525
return new int[]{};
2626
int[] res = new int[nums.length-k+1];
2727
int cur = 0;
28-
Deque<Integer> dq = new ArrayDeque(); //队列里是递减的,存的仍然是下标
28+
Deque<Integer> dq = new LinkedList(); //队列里是递减的,存的仍然是下标
2929
for (int i = 0; i < nums.length ; i++) {
3030
if( !dq.isEmpty() && dq.peekFirst()<=i-k) //窗口长度过长了,删掉头
3131
dq.removeFirst();

code/lc31.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,14 @@
66
* 分类:Array
77
* 思路:从后往前找第一个变小的数x,从后往前找出比第一个x大的数,交换,再把之后的数逆序即可
88
* Tips:很典型的排列组合题,思路方法记忆一下。注意比较时是否有=。
9+
* https://leetcode.com/problems/next-permutation/solution/
10+
*
11+
* 1584 76531
12+
* 1585 13467
913
*/
1014
public class lc31 {
1115
public static void main(String[] args) {
12-
int[] nums = {1,2,3};
16+
int[] nums = {1,5,8,4,7,6,5,3,1};
1317
nextPermutation(nums);
1418
for (int i:nums){
1519
System.out.println(i);
@@ -25,7 +29,7 @@ public static void nextPermutation(int[] nums) {
2529
}
2630
ptr--;
2731
if(ptr!=-1){
28-
//从后往前,找比
32+
//从后往前找出比第一个x大的数
2933
int val = nums[ptr];
3034
int ptr2 = nums.length-1;
3135
while(ptr2>ptr){

code/lc322.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* 分类:Dynamic Programming
77
* 思路:和lc279一样的思路,注意下没解的情况
88
* Tips:不用Set, 加一个dp[0]=0,可以直接递归出结果
9+
* dp[i] 表示组合成总值i的最少零钱数
910
*/
1011
import java.util.Arrays;
1112
import java.util.HashSet;

code/lc324.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ private void swap(int[] nums, int i, int j) {
3939
}
4040

4141
public int findMedium(int[] nums, int left, int right, int k){
42-
int cur = nums[left];
4342
int l = left;
4443
int r = right;
4544
while(left<right){

code/lc39.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ public static void main(String[] args) {
2020
}
2121
public static List<List<Integer>> combinationSum(int[] candidates, int target) {
2222
List<List<Integer>> res = new ArrayList<List<Integer>>();
23-
if(candidates.length==0||target==0)
24-
return res;
23+
if(candidates.length==0||target==0) return res;
2524
List<Integer> l = new ArrayList<Integer>();
2625
backtracking(res,candidates,target,l,0,0);
2726
return res;

code/lc542.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package code;
2+
/*
3+
* 542. 01 Matrix
4+
* 题意:0,1矩阵,每个点找离自己最近的0的距离
5+
* 难度:Medium
6+
* 分类:Depth-first Search, Breadth-first Search
7+
* 思路:广度优先搜索
8+
* Tips:
9+
*/
10+
import java.util.LinkedList;
11+
import java.util.Queue;
12+
13+
public class lc542 {
14+
public int[][] updateMatrix(int[][] matrix) {
15+
Queue<int[]> qu = new LinkedList();
16+
for(int i=0; i<matrix.length; i++){
17+
for(int j=0; j<matrix[0].length; j++){
18+
if(matrix[i][j]==0){
19+
qu.add(new int[]{i,j});
20+
}
21+
else matrix[i][j]=Integer.MAX_VALUE;
22+
}
23+
}
24+
25+
int[][] dirs = {{-1,0},{1,0},{0,-1},{0,1}};
26+
while(!qu.isEmpty()){
27+
int[] cell = qu.remove();
28+
for(int i=0; i<4; i++){
29+
int cur_row = cell[0]+dirs[i][0];
30+
int cur_col = cell[1]+dirs[i][1];
31+
if(cur_row<0||cur_row>=matrix.length||cur_col<0||cur_col>=matrix[0].length||matrix[cur_row][cur_col]<=matrix[cell[0]][cell[1]]+1) continue;
32+
matrix[cur_row][cur_col] = matrix[cell[0]][cell[1]]+1;
33+
qu.add(new int[]{cur_row,cur_col});
34+
}
35+
}
36+
return matrix;
37+
}
38+
}

code/lc685.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* 思路:要把问题想清楚
88
* 判断是否有某个节点父节点有两个, 记为e1, e2
99
* 再判断是否有环
10-
* 4中情况,分别想清楚返回什么
10+
* 4种情况,分别想清楚返回什么
1111
* 自己没想清楚两种情况的交叉,以为判断完第一步就可直接返回
1212
* 如何判断有环,可以利用并查集的思想
1313
* Tips:https://leetcode.com/problems/redundant-connection-ii/discuss/108045/C%2B%2BJava-Union-Find-with-explanation-O(n)

0 commit comments

Comments
 (0)