Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a6ad915

Browse files
committed
20190316
1 parent f6df74a commit a6ad915

File tree

13 files changed

+62
-9
lines changed

13 files changed

+62
-9
lines changed

‎code/lc105.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static TreeNode recursion(int[] preorder, int[] inorder, int pre_index, i
3434
}
3535
tn.left = recursion(preorder, inorder, pre_index+1, start, in_index-1);
3636
tn.right = recursion(preorder, inorder, pre_index+in_index-start+1, in_index+1, end); //注意右孩子节点index参数
37-
return tn;
37+
return tn;//记住函数的返回值的设置,返回Node,递归的构造子树
3838
}
3939

4040
}

‎code/lc108.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package code;
22
/*
33
* 108. Convert Sorted Array to Binary Search Tree
4-
* 题意:将有序数组转换为二叉平衡树
4+
* 题意:将有序数组转换为二叉搜索树
55
* 难度:Easy
66
* 分类:Tree, Depth-first Search
77
* 思路:类似二分查找,每次把数组劈成两半

‎code/lc32.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
/*
66
* 32. Longest Valid Parentheses
7-
* 题意:最长有效子串
7+
* 题意:最长括号匹配
88
* 难度:Hard
99
* 分类:Dynamic Programming, String
1010
* 思路:两种常规方法,一是dp,每个位置记录以该位置结尾的最长长度。另一种是用栈,把位置索引入栈。

‎code/lc35.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package code;
2+
/*
3+
* 35. Search Insert Position
4+
* 题意:找到数组中 target 插入的位置
5+
* 难度:
6+
* 分类:Array, Binary Search
7+
* 思路:二分查找
8+
* Tips:
9+
*/
10+
public class lc35 {
11+
public int searchInsert(int[] nums, int target) {
12+
int left = 0, right = nums.length-1;
13+
while(left<=right){
14+
int mid = (left + right)/2;
15+
if(nums[mid]==target) return mid;
16+
else if(nums[mid]<target) left = mid+1;
17+
else right = mid-1;
18+
}
19+
return left;
20+
}
21+
}

‎code/lc43.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package code;
2+
/*
3+
* 43. Multiply Strings
4+
* 题意:大数相乘
5+
* 难度:Medium
6+
* 分类:Math, String
7+
* 思路:每个位置上的数字都相乘,把位置排好,加起来
8+
* https://leetcode.com/problems/multiply-strings/discuss/17605/Easiest-JAVA-Solution-with-Graph-Explanation
9+
* Tips:挺难的,好多细节
10+
*/
11+
public class lc43 {
12+
public String multiply(String num1, String num2) {
13+
int[] res = new int[num1.length()+num2.length()]; //最高位 index 是 0
14+
for (int i = num1.length()-1; i>=0 ; i--) { //从后往前,解决重复进位
15+
for (int j = num2.length()-1; j>=0 ; j--) {
16+
int a = i+j;
17+
int b = i+j+1;
18+
int mul = (num1.charAt(i) -'0') * (num2.charAt(j) - '0');
19+
mul += res[b]; //解决进位
20+
res[b] = mul%10; //右边的直接=,因为上一步已经+了
21+
res[a] += mul/10; //左边+=
22+
}
23+
}
24+
StringBuilder sb = new StringBuilder();
25+
for(int i:res) if(!(sb.length()==0&&i==0)) sb.append(i);
26+
return sb.length() == 0 ? "0" : sb.toString();
27+
}
28+
}

‎code/lc56.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public List<Interval> merge(List<Interval> intervals) {
4343
}
4444
Arrays.sort(starts);
4545
Arrays.sort(ends);
46-
for (int i = 1; i < starts.length ; i++) {
46+
for (int i = 1; i < starts.length ; i++) {//注意下这里的操作
4747
if(starts[i]<=ends[i-1]){
4848
starts[i] = starts[i-1];
4949
}else{

‎code/lc63.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
* 题意:路径数
66
* 难度:Medium
77
* 分类:Array, Dynamic Programming
8-
* 思路:和lc64, lc62思路一样, arr存储的内容由路径数换成了和
9-
* Tips:可以用一位数组减小空间复杂度
8+
* 思路:和lc64, lc62思路一样
9+
* Tips:可以用一维数组减小空间复杂度
1010
*/
1111
public class lc63 {
1212
public static void main(String[] args) {

‎code/lc73.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* 难度:Medium
66
* 分类:Array
77
* 思路:用第一行和第一列作为标志位。注意赋值的时候从后往前,防止标志位被改变
8+
* 两遍循环,先记录,再置位
89
* Tips:注意赋值的顺序,防止标志位被改变
910
* 思路是很简单,但有许多细节
1011
*/

‎code/lc76.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* 思路:两个指针,移动右指针使得满足条件,移动左指针缩短距离。用hashmap存储进行判断是否满足条件。
88
* Tips:很难的题,思路记一下。
99
* https://leetcode.com/problems/minimum-window-substring/discuss/26808/here-is-a-10-line-template-that-can-solve-most-substring-problems
10+
* 和lc3也坐下对比
1011
*/
1112
import java.util.HashMap;
1213

‎code/lc79.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* 分类:Array, Backtracking
77
* 思路:回溯法
88
* Tips:访问过的格子要标记,不能重复访问。回溯法注意回来的时候要重置标志位。向下找的时候直接找4个方向的,回来的时候不用再找了,只需重置标志位。
9+
* 不用mem,因为 ABC ABAD 这种情况,不能仅仅从A一个字符就断定为不为true
910
*/
1011
public class lc79 {
1112
public static void main(String[] args) {

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /