Skip to content

Commit 03eb5c3

Browse files
Merge pull request #86 from yubo1/master
第一周作业_050
2 parents 1e8a90f + 03d1253 commit 03eb5c3

10 files changed

+486
-0
lines changed

Week_01/id_50/LeetCode_1021_050.java

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import java.util.ArrayList;
2+
import java.util.Arrays;
3+
import java.util.HashMap;
4+
import java.util.HashSet;
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.Set;
8+
import java.util.Stack;
9+
10+
11+
12+
/**
13+
* @author yu
14+
* 删除最外层的括号
15+
*/
16+
public class LeetCode_1021_050 {
17+
/**
18+
* @param args
19+
*/
20+
public static void main(String[] args) {
21+
LeetCode_1021_050 solution = new LeetCode_1021_050();
22+
System.out.println(solution.removeOuterParentheses("(())(()(()))"));
23+
}
24+
25+
public String removeOuterParentheses(String S) {
26+
if(S == null){
27+
return null;
28+
}
29+
if(S.length() == 0){
30+
return "";
31+
}
32+
char[] charArr = S.toCharArray();
33+
Stack<Character> stack = new Stack<>();
34+
StringBuilder strBuild = new StringBuilder();
35+
int n = 0;
36+
Set<Integer> setval = new HashSet<>();
37+
for(int i=0; i<charArr.length; i++){
38+
if(stack.size()==0){
39+
stack.add(charArr[i]);
40+
setval.add(i);
41+
n++;
42+
continue;
43+
}
44+
StringBuilder strtmp = new StringBuilder();
45+
if(strtmp.append(stack.get(stack.size()-1)).append(charArr[i]).toString().equals("()")){
46+
if(stack.size()==1 && n==1){
47+
setval.add(i);
48+
n=0;
49+
}
50+
stack.pop();
51+
}else{
52+
stack.add(charArr[i]);
53+
}
54+
}
55+
for(int i=0; i<charArr.length; i++){
56+
if(!setval.contains(i)){
57+
strBuild.append(charArr[i]);
58+
}
59+
}
60+
return strBuild.toString();
61+
}
62+
}

Week_01/id_50/LeetCode_1047_050.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import java.util.ArrayList;
2+
import java.util.Arrays;
3+
import java.util.HashMap;
4+
import java.util.HashSet;
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.Set;
8+
import java.util.Stack;
9+
10+
11+
12+
/**
13+
* @author yu
14+
* 删除字符串中的所有相邻重复项
15+
*/
16+
public class LeetCode_1047_050 {
17+
/**
18+
* @param args
19+
*/
20+
public static void main(String[] args) {
21+
LeetCode_1047_050 solution = new LeetCode_1047_050();
22+
System.out.println(solution.removeDuplicates("abbacaacdad"));
23+
}
24+
25+
public String removeDuplicates(String S) {
26+
if(S == null){
27+
return null;
28+
}
29+
if(S.length() == 0){
30+
return "";
31+
}
32+
char[] charArr = S.toCharArray();
33+
Stack<Character> stack = new Stack<>();
34+
for(char c : charArr){
35+
if(stack.size()==0){
36+
stack.add(c);
37+
}else{
38+
if(c == stack.get(stack.size()-1)){
39+
stack.pop();
40+
}else{
41+
stack.add(c);
42+
}
43+
}
44+
}
45+
StringBuilder strBuild = new StringBuilder();
46+
for(Character c: stack){
47+
strBuild.append(c);
48+
}
49+
return strBuild.toString();
50+
}
51+
}

Week_01/id_50/LeetCode_104_050.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import java.util.ArrayList;
2+
import java.util.Arrays;
3+
import java.util.HashMap;
4+
import java.util.HashSet;
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.Set;
8+
import java.util.Stack;
9+
10+
11+
12+
/**
13+
* @author yu
14+
* 二叉树的最大深度
15+
*/
16+
public class LeetCode_441_050 {
17+
/**
18+
* @param args
19+
*/
20+
public static void main(String[] args) {
21+
}
22+
23+
public int maxDepth(TreeNode root) {
24+
if(root == null){
25+
return 0;
26+
}else{
27+
int left = maxDepth(root.left);
28+
int right = maxDepth(root.right);
29+
return Math.max(left, right)+1;
30+
}
31+
}
32+
}

Week_01/id_50/LeetCode_111_050.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import java.util.ArrayList;
2+
import java.util.Arrays;
3+
import java.util.HashMap;
4+
import java.util.HashSet;
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.Set;
8+
import java.util.Stack;
9+
10+
11+
12+
/**
13+
* @author yu
14+
* 二叉树的最小深度
15+
*/
16+
public class LeetCode_111_050 {
17+
/**
18+
* @param args
19+
*/
20+
public static void main(String[] args) {
21+
}
22+
23+
public int minDepth(TreeNode root) {
24+
if(root == null){
25+
return 0;
26+
}else{
27+
if(root.left == null && root.right == null){
28+
return 1;
29+
}
30+
int min_val = Integer.MAX_VALUE;
31+
if(root.left != null){
32+
int left = minDepth(root.left);
33+
min_val = Math.min(left, min_val);
34+
35+
}
36+
if(root.right != null){
37+
int right = minDepth(root.right);
38+
min_val = Math.min(right, min_val);
39+
}
40+
return min_val+1;
41+
}
42+
}
43+
}

Week_01/id_50/LeetCode_189_050.java

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import java.util.ArrayList;
2+
import java.util.Arrays;
3+
import java.util.HashMap;
4+
import java.util.HashSet;
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.Set;
8+
import java.util.Stack;
9+
10+
11+
12+
/**
13+
* @author yu
14+
* 删除排序数组中的重复项
15+
*/
16+
public class LeetCode_189_050 {
17+
/**
18+
* @param args
19+
*/
20+
public static void main(String[] args) {
21+
LeetCode_189_050 solution = new LeetCode_189_050();
22+
int[] nums = {1,2};
23+
String[] strs = {"nozzle","punjabi","waterlogged","imprison","crux","numismatists"};
24+
// System.out.println(solution.removeDuplicates(nums));
25+
solution.rotate(nums, 1);
26+
// System.out.println(solution.isAnagram("dgqztusjuu", "dqugjzutss"));
27+
// solution.groupAnagrams(strs);
28+
// System.out.println(solution.removeDuplicates("abbacaacdad"));
29+
// System.out.println(solution.removeOuterParentheses("(())(()(()))"));
30+
// System.out.println(solution.arrangeCoins(2147483647));
31+
// System.out.println(solution.myPow(2, 10));
32+
}
33+
34+
public void rotate(int[] nums, int k) {
35+
k = k%nums.length;
36+
if( k<=0 ){
37+
return;
38+
}
39+
int val = 0;
40+
for(int i=0; i<(nums.length-k)/2; i++){
41+
val=nums[i];
42+
nums[i] = nums[nums.length-1-k-i];
43+
nums[nums.length-1-k-i] = val;
44+
45+
}
46+
for(int i=nums.length-k; i<nums.length-k+k/2; i++){
47+
val=nums[i];
48+
nums[i] = nums[nums.length-1-(i-(nums.length-k))];
49+
nums[nums.length-1-(i-(nums.length-k))] = val;
50+
}
51+
for(int i=0; i<(nums.length)/2; i++){
52+
val=nums[i];
53+
nums[i] = nums[nums.length-1-i];
54+
nums[nums.length-1-i] = val;
55+
// System.out.println(nums[i]);
56+
}
57+
// for(int i=0; i<nums.length; i++){
58+
// System.out.println(nums[i]);
59+
// }
60+
return;
61+
}
62+
}

Week_01/id_50/LeetCode_242_050.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import java.util.ArrayList;
2+
import java.util.Arrays;
3+
import java.util.HashMap;
4+
import java.util.HashSet;
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.Set;
8+
import java.util.Stack;
9+
10+
11+
12+
/**
13+
* @author yu
14+
* 有效的字母异位词
15+
*/
16+
public class LeetCode_242_050 {
17+
/**
18+
* @param args
19+
*/
20+
public static void main(String[] args) {
21+
LeetCode_242_050 solution = new LeetCode_242_050();
22+
int[] nums = {1,2};
23+
String[] strs = {"nozzle","punjabi","waterlogged","imprison","crux","numismatists"};
24+
System.out.println(solution.isAnagram("dgqztusjuu", "dqugjzutss"));
25+
}
26+
27+
public boolean isAnagram(String s, String t) {
28+
if(s == null || t == null){
29+
return false;
30+
}
31+
if(s.length() != t.length()){
32+
return false;
33+
}
34+
Map<Object, Integer> map1 = new HashMap<>();
35+
Map<Object, Integer> map2 = new HashMap<>();
36+
for(int i=0; i<s.length(); i++){
37+
if(map1.get(s.charAt(i)) != null){
38+
map1.put(s.charAt(i), map1.get(s.charAt(i))+1);
39+
}else{
40+
map1.put(s.charAt(i), 1);
41+
}
42+
}
43+
for(int i=0; i<t.length(); i++){
44+
if(map2.get(t.charAt(i)) != null){
45+
map2.put(t.charAt(i), map2.get(t.charAt(i))+1);
46+
}else{
47+
map2.put(t.charAt(i), 1);
48+
}
49+
}
50+
51+
52+
return map1.equals(map2);
53+
}
54+
}

Week_01/id_50/LeetCode_26_050.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import java.util.ArrayList;
2+
import java.util.Arrays;
3+
import java.util.HashMap;
4+
import java.util.HashSet;
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.Set;
8+
import java.util.Stack;
9+
10+
11+
12+
/**
13+
* @author yu
14+
* 删除排序数组中的重复项
15+
*/
16+
public class LeetCode_26_050 {
17+
/**
18+
* @param args
19+
*/
20+
public static void main(String[] args) {
21+
LeetCode_26_050 solution = new LeetCode_26_050();
22+
int[] nums = {1,2};
23+
System.out.println(solution.removeDuplicates(nums));
24+
}
25+
26+
public int removeDuplicates(int[] nums) {
27+
int n = 0;
28+
for(int i=0; i<nums.length; i++){
29+
for(int j=0; j<=n; j++){
30+
if(i==0){
31+
// System.out.println(nums[i]);
32+
n++;
33+
break;
34+
}
35+
if(nums[i]==nums[j]){
36+
break;
37+
}else{
38+
if(j==(n-1)){
39+
nums[n]=nums[i];
40+
// System.out.println(nums[i]);
41+
n++;
42+
}
43+
}
44+
}
45+
}
46+
return n;
47+
}
48+
}

0 commit comments

Comments
 (0)