Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Cs Summary Reflection
提交
67dbb640
C
Cs Summary Reflection
项目概览
梦境迷离
/
Cs Summary Reflection
10 个月 前同步成功
通知
4
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Cs Summary Reflection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
67dbb640
编写于
8月 09, 2020
作者:
W
Weikunkun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
daily question---20/8/9
上级
81416b34
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
181 addition
and
1 deletion
+181
-1
java-leetcode/src/main/java/io/github/wkk/everyday/aug/RecoverBinarySearchTree.java
...a/io/github/wkk/everyday/aug/RecoverBinarySearchTree.java
+64
-0
java-leetcode/src/main/java/io/github/wkk/everyday/aug/RestoreIPAddresses.java
...n/java/io/github/wkk/everyday/aug/RestoreIPAddresses.java
+92
-0
java-leetcode/src/main/java/io/github/wkk/everyday/aug/SameTree.java
...de/src/main/java/io/github/wkk/everyday/aug/SameTree.java
+22
-0
java-leetcode/src/main/java/io/github/wkk/wkk.md
java-leetcode/src/main/java/io/github/wkk/wkk.md
+3
-1
未找到文件。
java-leetcode/src/main/java/io/github/wkk/everyday/aug/RecoverBinarySearchTree.java
0 → 100644
浏览文件 @
67dbb640
/* All Contributors (C) 2020 */
package
io.github.wkk.everyday.aug
;
import
io.github.wkk.structs.TreeNode
;
import
java.util.ArrayDeque
;
import
java.util.Deque
;
/**
* 恢复二叉搜索树
*
* <p>难点: 找出真正出问题的两个点
*
* <p>思路: 根据其性质, 使用中序遍历, 标记出真正出现问题的两个位置, 之后交换其元素值即可
*
* <p>抽象: .....errorOne |increasing sequence | errorTwo .......
*
* <p>第一个节点,是第一个按照中序遍历时候前一个节点大于后一个节点,我们选取前一个节点
*
* <p>第二个节点,是在第一个节点找到之后, 后面出现前一个节点大于后一个节点,我们选择后一个节点
*
* @author kongwiki@163.com
* @since 2020/8/8上午8:59
*/
public
class
RecoverBinarySearchTree
{
private
TreeNode
errorOne
,
errorTwo
;
public
void
recoverTree
(
TreeNode
root
)
{
helper
(
root
);
swap
(
errorOne
,
errorTwo
);
}
private
void
helper
(
TreeNode
root
)
{
if
(
root
==
null
)
{
return
;
}
TreeNode
pre
=
null
;
Deque
<
TreeNode
>
stack
=
new
ArrayDeque
<>();
TreeNode
p
=
root
;
while
(!
stack
.
isEmpty
()
||
p
!=
null
)
{
if
(
p
!=
null
)
{
stack
.
push
(
p
);
p
=
p
.
left
;
}
else
{
p
=
stack
.
pop
();
if
(
pre
!=
null
&&
pre
.
val
>
p
.
val
)
{
if
(
errorOne
==
null
)
{
errorOne
=
pre
;
errorTwo
=
p
;
}
else
{
errorTwo
=
p
;
}
}
pre
=
p
;
p
=
p
.
right
;
}
}
}
private
void
swap
(
TreeNode
first
,
TreeNode
second
)
{
int
temp
=
first
.
val
;
first
.
val
=
second
.
val
;
second
.
val
=
temp
;
}
}
java-leetcode/src/main/java/io/github/wkk/everyday/aug/RestoreIPAddresses.java
0 → 100644
浏览文件 @
67dbb640
/* All Contributors (C) 2020 */
package
io.github.wkk.everyday.aug
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 复原IP地址(IP格式: 每一位都在0-255之间)
*
* <p>思路: 1.暴力求解 2.回溯(涉及到求所有的结果, 常用方法)
*
* @author kongwiki@163.com
* @since 2020/8/9上午9:33
*/
public
class
RestoreIPAddresses
{
/** 暴力求解 需要一个辅助方法, 判断每个子串是否符合IP格式 1. 每位在0-255之间 2. 不能出现0开头的两位以上数字 */
public
List
<
String
>
restoreIpAddresses
(
String
s
)
{
List
<
String
>
res
=
new
ArrayList
<>();
if
(
s
==
null
||
s
.
length
()
==
0
||
s
.
length
()
>
12
)
{
return
res
;
}
int
n
=
s
.
length
();
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
for
(
int
j
=
i
+
1
;
j
<
i
+
4
;
j
++)
{
for
(
int
k
=
j
+
1
;
k
<
j
+
4
;
k
++)
{
if
(
j
<
n
&&
k
<
n
)
{
String
a
=
s
.
substring
(
0
,
i
+
1
);
String
b
=
s
.
substring
(
i
+
1
,
j
+
1
);
String
c
=
s
.
substring
(
j
+
1
,
k
+
1
);
String
d
=
s
.
substring
(
k
+
1
);
if
(
helper
(
a
)
&&
helper
(
b
)
&&
helper
(
c
)
&&
helper
(
d
))
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
a
)
.
append
(
"."
)
.
append
(
b
)
.
append
(
"."
)
.
append
(
c
)
.
append
(
"."
)
.
append
(
d
);
res
.
add
(
sb
.
toString
());
}
}
}
}
}
return
res
;
}
private
boolean
helper
(
String
s
)
{
if
(
s
==
null
||
s
.
length
()
==
0
||
s
.
length
()
>
3
||
s
.
charAt
(
0
)
==
'0'
&&
s
.
length
()
>
1
||
Integer
.
parseInt
(
s
)
>
255
)
{
return
false
;
}
return
true
;
}
/** 回溯 */
public
List
<
String
>
restoreIpAddressesII
(
String
s
)
{
List
<
String
>
res
=
new
ArrayList
<>();
if
(
s
==
null
||
s
.
length
()
==
0
||
s
.
length
()
>
12
)
{
return
res
;
}
int
n
=
s
.
length
();
backtrack
(
0
,
""
,
4
,
s
,
n
,
res
);
return
res
;
}
/** 回溯本体 */
private
void
backtrack
(
int
start
,
String
tmp
,
int
flag
,
String
s
,
int
n
,
List
<
String
>
res
)
{
if
(
start
==
n
&&
flag
==
0
)
{
res
.
add
(
tmp
.
substring
(
0
,
tmp
.
length
()
-
1
));
return
;
}
if
(
flag
<
0
)
{
return
;
}
for
(
int
j
=
start
;
j
<
start
+
3
;
j
++)
{
if
(
j
<
n
)
{
if
(
start
==
j
&&
s
.
charAt
(
j
)
==
'0'
)
{
backtrack
(
j
+
1
,
tmp
+
s
.
charAt
(
j
)
+
"."
,
flag
-
1
,
s
,
n
,
res
);
break
;
}
if
(
Integer
.
parseInt
(
s
.
substring
(
start
,
j
+
1
))
<=
255
)
{
backtrack
(
j
+
1
,
tmp
+
s
.
substring
(
start
,
j
+
1
)
+
"."
,
flag
-
1
,
s
,
n
,
res
);
}
}
}
}
}
java-leetcode/src/main/java/io/github/wkk/everyday/aug/SameTree.java
0 → 100644
浏览文件 @
67dbb640
/* All Contributors (C) 2020 */
package
io.github.wkk.everyday.aug
;
import
io.github.wkk.structs.TreeNode
;
/**
* @author kongwiki@163.com
* @since 2020/8/7上午8:58
*/
public
class
SameTree
{
public
boolean
isSameTree
(
TreeNode
p
,
TreeNode
q
)
{
if
(
p
==
null
&&
q
==
null
)
{
return
true
;
}
else
if
(
p
==
null
||
q
==
null
)
{
return
false
;
}
else
if
(
p
.
val
!=
q
.
val
)
{
return
false
;
}
else
{
return
isSameTree
(
p
.
left
,
q
.
left
)
&&
isSameTree
(
p
.
right
,
q
.
right
);
}
}
}
java-leetcode/src/main/java/io/github/wkk/wkk.md
浏览文件 @
67dbb640
...
...
@@ -9,7 +9,9 @@
4.
[
207. 课程表
](
./everyday/aug/CourseSchedule.java
)
5.
[
337. 打家劫舍III
](
./everyday/aug/HouseRobberIII.java
)
6.
[
336. 回文对
](
./everyday/aug/PalindromePairs.java
)
7.
[
100. 相同的树
](
./everyday/aug/SameTree.java
)
8.
[
99. 恢复二叉搜索树
](
./everyday/aug/RecoverBinarySearchTree.java
)
9.
[
93. 复原IP地址
](
./everyday/aug/RestoreIPAddresses.java
)
## 哈希表
1.
[
1. 两数之和
](
./TwoSum.java
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录