Skip to content

Commit 50a3672

Browse files
committed
添加完成的题目
1 parent 6aa4944 commit 50a3672

File tree

2 files changed

+113
-0
lines changed

2 files changed

+113
-0
lines changed

394.字符串解码.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import java.util.ArrayList;
2+
import java.util.Stack;
3+
4+
/*
5+
* @lc app=leetcode.cn id=394 lang=java
6+
*
7+
* [394] 字符串解码
8+
*/
9+
10+
// @lc code=start
11+
class Solution {
12+
public String decodeString(String s) {
13+
Stack<String> stack = new Stack<>();
14+
ArrayList<Integer> list = new ArrayList<>();
15+
char[] c = s.toCharArray();
16+
StringBuilder temp = new StringBuilder();
17+
StringBuilder number = new StringBuilder();
18+
for(int i = 0; i < c.length;i++){
19+
if(c[i]>='0' && c[i] <= '9'){
20+
number.append(String.valueOf(c[i]));
21+
}else if (c[i] == '['){
22+
list.add(Integer.valueOf(number.toString()));
23+
number = new StringBuilder();
24+
stack.push(String.valueOf(c[i]));
25+
}else if ((c[i] >='a' && c[i] <='z') || (c[i] >= 'A' && c[i]<='Z')){
26+
stack.push(String.valueOf(c[i]));
27+
}else if(c[i] == ']'){
28+
temp = new StringBuilder();
29+
ArrayList<String> holder = new ArrayList<>();
30+
StringBuilder sb = new StringBuilder();
31+
while(!"[".equals(stack.peek())){
32+
holder.add(stack.pop());
33+
}
34+
stack.pop();
35+
for(int j = holder.size()-1;j>=0;j--){
36+
sb.append(holder.get(j));
37+
}
38+
int times = list.remove(list.size()-1);
39+
for(int j = 0; j < times; j++){
40+
temp.append(sb);
41+
}
42+
stack.push(temp.toString());
43+
temp = new StringBuilder();
44+
}
45+
}
46+
temp = new StringBuilder();
47+
ArrayList<String> holder2 = new ArrayList<>();
48+
while(!stack.isEmpty()){
49+
holder2.add(stack.pop());
50+
}
51+
for(int j = holder2.size()-1;j>=0;j--){
52+
temp.append(holder2.get(j));
53+
}
54+
return temp.toString();
55+
}
56+
}
57+
// @lc code=end
58+

662.二叉树最大宽度.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import java.util.LinkedList;
2+
import java.util.Queue;
3+
4+
import javax.swing.tree.TreeNode;
5+
6+
/*
7+
* @lc app=leetcode.cn id=662 lang=java
8+
*
9+
* [662] 二叉树最大宽度
10+
*/
11+
12+
// @lc code=start
13+
/**
14+
* Definition for a binary tree node.
15+
* public class TreeNode {
16+
* int val;
17+
* TreeNode left;
18+
* TreeNode right;
19+
* TreeNode(int x) { val = x; }
20+
* }
21+
*/
22+
class Solution {
23+
public int widthOfBinaryTree(TreeNode root) {
24+
LinkedList<Integer> list = new LinkedList<>();
25+
Queue<TreeNode> queue = new LinkedList<>();
26+
if(root == null){
27+
return 0;
28+
}
29+
queue.add(root);
30+
list.add(1);
31+
int result = 1;
32+
while(!queue.isEmpty()){
33+
int count = queue.size();
34+
for(int i = 0 ; i < count;i++){
35+
TreeNode temp = queue.poll();
36+
int currentLevel = list.removeFirst();
37+
if(temp.left != null){
38+
queue.add(temp.left);
39+
list.add(currentLevel*2);
40+
}
41+
if(temp.right != null){
42+
queue.add(temp.right);
43+
list.add(currentLevel*2+1);
44+
}
45+
}
46+
if(list.size()>=2){
47+
result = Math.max(result, list.getLast() - list.getFirst() +1);
48+
}
49+
50+
}
51+
return result;
52+
}
53+
}
54+
// @lc code=end
55+

0 commit comments

Comments
 (0)