Skip to content

Commit de1daf6

Browse files
committed
20181031
1 parent 0573fca commit de1daf6

39 files changed

+614
-431
lines changed

src/main/java/leetcode/array/_15_Sum3.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
/**
88
* 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,
99
* 使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
10-
* <p>
10+
*
1111
* 注意:答案中不可以包含重复的三元组。
12-
* <p>
12+
*
1313
* 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],
14-
* <p>
14+
*
1515
* 满足要求的三元组集合为:
1616
* [
1717
* [-1, 0, 1],

src/main/java/leetcode/array/_169_MajorityElement.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
/**
44
* Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.
5-
* <p>
5+
*
66
* You may assume that the array is non-empty and the majority element always exist in the array.
7-
* <p>
7+
*
88
* Example 1:
9-
* <p>
9+
*
1010
* Input: [3,2,3]
1111
* Output: 3
1212
* Example 2:
13-
* <p>
13+
*
1414
* Input: [2,2,1,1,1,2,2]
1515
* Output: 2
1616
*/
@@ -22,7 +22,7 @@
2222
* 因为众数是出现次数大于n/2的数字,所以排序之后中间的那个数字一定是众数。即nums[n/2]为众数。时间复杂度即排序的时间复杂度。
2323
* 3.剑指offer思想
2424
* 每找出两个不同的element,则成对删除。最终剩下的一定就是所求的。
25-
* <p>
25+
*
2626
* 可扩展到⌊ n/k ⌋的情况,每k个不同的element进行成对删除。
2727
* 3.分治法
2828
* 分治法是将整个问题化简为一个一个的小问题去解,将数组分成简单的几部分,比如讲一组数分为两部分,第一部分的众数如果等于第二部分的众数,

src/main/java/leetcode/array/_54_SpiralMatrix.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
/**
77
* Created by fay on 2017/12/8.
88
* 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
9-
* <p>
9+
*
1010
* 示例 1:
11-
* <p>
11+
*
1212
* 输入:
1313
* [
1414
* [ 1, 2, 3 ],
@@ -17,7 +17,7 @@
1717
* ]
1818
* 输出: [1,2,3,6,9,8,7,4,5]
1919
* 示例 2:
20-
* <p>
20+
*
2121
* 输入:
2222
* [
2323
* [1, 2, 3, 4],

src/main/java/leetcode/array/_56_MergeIntervals.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package leetcode.array;
22
/**
33
* 给出一个区间的集合,请合并所有重叠的区间。
4-
* <p>
4+
*
55
* 示例 1:
6-
* <p>
6+
*
77
* 输入: [[1,3],[2,6],[8,10],[15,18]]
88
* 输出: [[1,6],[8,10],[15,18]]
99
* 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
1010
* 示例 2:
11-
* <p>
11+
*
1212
* 输入: [[1,4],[4,5]]
1313
* 输出: [[1,5]]
1414
* 解释: 区间 [1,4] 和 [4,5] 可被视为重叠

src/main/java/leetcode/dfsbfsbacktracing/CombinationSum.java

Lines changed: 0 additions & 65 deletions
This file was deleted.

src/main/java/leetcode/dfsbfsbacktracing/CombinationSum2.java

Lines changed: 0 additions & 71 deletions
This file was deleted.

src/main/java/leetcode/dfsbfsbacktracing/Combinations.java

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/main/java/leetcode/dfsbfsbacktracing/GenerateParentheses.java

Lines changed: 0 additions & 50 deletions
This file was deleted.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package leetcode.dfsbfsbacktracing;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
/**
7+
* 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
8+
* 例如,给出 n = 3,生成结果为:
9+
* [
10+
* "((()))",
11+
* "(()())",
12+
* "(())()",
13+
* "()(())",
14+
* "()()()"
15+
* ]
16+
*/
17+
public class _22_GenerateParentheses {
18+
19+
public List<String> generateParenthesis(int n) {
20+
List<String> result = new ArrayList();
21+
StringBuffer res = new StringBuffer();
22+
String resstr = new String();
23+
dfs(n, n, resstr, result);
24+
// dfs1(n, n, res, result);
25+
return result;
26+
}
27+
28+
public void dfs(int left, int right, String res, List<String> result) {
29+
if (left < 0 || right < 0 || left > right) {
30+
return;
31+
}
32+
if (left == 0 && right == 0) {
33+
result.add(res);
34+
return;
35+
}
36+
dfs(left - 1, right, res + '(', result);
37+
System.out.println(res);
38+
dfs(left, right - 1, res + ')', result);
39+
System.out.println(res);
40+
}
41+
42+
//TODO 有错误没有删除上一步的缓存
43+
public void dfs1(int left, int right, StringBuffer res, List<String> result) {
44+
if (left < 0 || right < 0 || left > right) {
45+
return;
46+
}
47+
if (left == 0 && right == 0) {
48+
result.add(res.toString());
49+
return;
50+
}
51+
dfs1(left - 1, right, res.append('('), result);
52+
dfs1(left, right - 1, res.append(')'), result);
53+
}
54+
55+
public static void main(String[] args) {
56+
List<String> res = new ArrayList<>();
57+
_22_GenerateParentheses t = new _22_GenerateParentheses();
58+
res = t.generateParenthesis(2);
59+
for (String str : res) {
60+
System.out.println(str);
61+
}
62+
}
63+
}

0 commit comments

Comments
 (0)