Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Damon-Da
leetcode
提交
71a611aa
L
leetcode
项目概览
Damon-Da
/
leetcode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
leetcode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
71a611aa
编写于
3月 24, 2019
作者:
L
liu13
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
20190324
上级
2d9f4774
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
171 addition
and
2 deletion
+171
-2
code/lc15.java
code/lc15.java
+1
-0
code/lc16.java
code/lc16.java
+1
-1
code/lc53.java
code/lc53.java
+1
-0
code/lc560.java
code/lc560.java
+1
-1
code/lc921.java
code/lc921.java
+25
-0
code/lc922.java
code/lc922.java
+38
-0
code/lc923.java
code/lc923.java
+73
-0
code/lc978.java
code/lc978.java
+28
-0
readme.md
readme.md
+3
-0
未找到文件。
code/lc15.java
浏览文件 @
71a611aa
...
...
@@ -5,6 +5,7 @@ package code;
* 难度:Medium
* 分类:Array, Two Pointers
* 注意:如何避免 List 重复元素
* Tips:lc15, lc16, lc923
*/
import
java.util.*
;
...
...
code/lc16.java
浏览文件 @
71a611aa
...
...
@@ -7,7 +7,7 @@ import java.util.Arrays;
* 难度:Medium
* 分类:Array, Two Pointers
* 思路:3sum的思路,每次记下最接近的res即可
* Tips:
* Tips:
lc15, lc16, lc923
*/
public
class
lc16
{
public
int
threeSumClosest
(
int
[]
nums
,
int
target
)
{
...
...
code/lc53.java
浏览文件 @
71a611aa
...
...
@@ -5,6 +5,7 @@ package code;
* 难度:Easy
* 分类:Array, Divide and Conquer, Dynamic Programming
* 注意:分治方法如何进行merge,merge时,必须包含mid元素,因为是连续子序列
* lc978
*/
public
class
lc53
{
public
static
void
main
(
String
[]
args
)
{
...
...
code/lc560.java
浏览文件 @
71a611aa
...
...
@@ -4,7 +4,7 @@ import java.util.HashMap;
/*
* 560. Subarray Sum Equals K
* 题意:子数组的和等于k的个数
* 题意:
连续
子数组的和等于k的个数
* 难度:Medium
* 分类:Array, Hash Table
* 思路:求出累加和存在hashmap中,如果当前hashmap中存在sum-k,那么就是一个解
...
...
code/lc921.java
0 → 100644
浏览文件 @
71a611aa
package
code
;
import
java.util.Stack
;
/*
* 921. Minimum Add to Make Parentheses Valid
* 题意:最少添加符号个数,使得表达式有效
* 难度:Medium
* 分类:Stack, Greedy
* 思路:匹配的都出栈,最后剩下的栈中没匹配的个数,就是需要添加的个数
* Tips:
*/
public
class
lc921
{
public
int
minAddToMakeValid
(
String
S
)
{
char
[]
ch_arr
=
S
.
toCharArray
();
Stack
<
Character
>
st
=
new
Stack
<>();
for
(
int
i
=
0
;
i
<
ch_arr
.
length
;
i
++)
{
if
(
ch_arr
[
i
]==
')'
&&
!
st
.
isEmpty
()
&&
st
.
peek
()==
'('
){
st
.
pop
();
}
else
{
st
.
push
(
ch_arr
[
i
]);
}
}
return
st
.
size
();
}
}
code/lc922.java
0 → 100644
浏览文件 @
71a611aa
package
code
;
/*
* 922. Sort Array By Parity II
* 题意:奇数位置上都是奇数,偶数位置上都是偶数
* 难度:Easy
* 分类:Array, Sort
* 思路:题看似简单,但最优的方法并不好写
* Tips:
*/
public
class
lc922
{
public
int
[]
sortArrayByParityII
(
int
[]
A
)
{
//O(N^2)
for
(
int
i
=
0
;
i
<
A
.
length
;
i
++)
{
if
(
A
[
i
]%
2
==
i
%
2
)
continue
;
for
(
int
j
=
i
+
1
;
j
<
A
.
length
;
j
++)
{
if
(
A
[
i
]%
2
!=
A
[
j
]%
2
)
{
int
temp
=
A
[
i
];
A
[
i
]
=
A
[
j
];
A
[
j
]
=
temp
;
break
;
}
}
}
return
A
;
}
public
int
[]
sortArrayByParityII2
(
int
[]
A
)
{
//很巧妙的方法 O(N)时间, O(1)空间
int
cur
=
1
;
//奇数位置的位置
for
(
int
i
=
0
;
i
<
A
.
length
;
i
+=
2
)
{
//这里+2 只判断偶数位置上是否符合
if
(
A
[
i
]%
2
==
1
){
while
(
A
[
cur
]%
2
==
1
)
cur
+=
2
;
int
temp
=
A
[
cur
];
A
[
cur
]
=
A
[
i
];
A
[
i
]
=
temp
;
}
}
return
A
;
}
}
code/lc923.java
0 → 100644
浏览文件 @
71a611aa
package
code
;
import
java.util.Arrays
;
import
java.util.HashMap
;
/*
* 923. 3Sum With Multiplicity
* 题意:3Sum有几种?数组中有重复数字
* 难度:Medium
* 分类:Two Pointers
* 思路:由于本题只要求给出多少种Int值,所以不一定非要用3Sum的思路,有很多更简答的方法
* 3种思路
* Tips:
*/
public
class
lc923
{
public
int
threeSumMulti
(
int
[]
A
,
int
target
)
{
int
res
=
0
;
HashMap
<
Integer
,
Integer
>
hm
=
new
HashMap
();
for
(
int
i
=
0
;
i
<
A
.
length
;
i
++)
{
res
=
(
res
+
hm
.
getOrDefault
(
target
-
A
[
i
],
0
))%
1000000007
;
// i之前的数字,两个组合起来,是否 == target-A[i]
for
(
int
j
=
0
;
j
<
i
;
j
++)
{
hm
.
put
(
A
[
i
]+
A
[
j
],
hm
.
getOrDefault
(
A
[
i
]+
A
[
j
],
0
)+
1
);
}
}
return
res
;
}
public
int
threeSumMulti2
(
int
[]
A
,
int
target
)
{
//3Sum的思路
int
res
=
0
;
Arrays
.
sort
(
A
);
for
(
int
i
=
0
;
i
<
A
.
length
-
2
;
i
++)
{
int
left
=
i
+
1
,
right
=
A
.
length
-
1
;
while
(
left
<
right
){
if
(
A
[
i
]+
A
[
left
]+
A
[
right
]<
target
)
left
++;
else
if
(
A
[
i
]+
A
[
left
]+
A
[
right
]>
target
)
right
--;
else
if
(
A
[
left
]==
A
[
right
])
{
//如果相等,则直接 C N 取 2,计算出来,然后break
res
=
(
res
+
(
right
-
left
)*(
right
-
left
+
1
)/
2
)%
1000000007
;
break
;
//不用继续移动指针了
}
else
{
int
leftcount
=
1
,
rightcount
=
1
;
while
(
A
[
left
]==
A
[
left
+
1
])
{
left
++;
leftcount
++;
}
while
(
A
[
right
]==
A
[
right
-
1
])
{
right
--;
rightcount
++;
}
res
=
(
res
+
leftcount
*
rightcount
)%
1000000007
;
left
++;
//别忘了,最后还要操作一下
right
--;
}
}
}
return
res
;
}
public
int
threeSumMulti3
(
int
[]
A
,
int
target
)
{
//直接数学计算
long
[]
c
=
new
long
[
101
];
for
(
int
a
:
A
)
c
[
a
]++;
long
res
=
0
;
for
(
int
i
=
0
;
i
<=
100
;
i
++)
// 题目给了值不超过100
for
(
int
j
=
i
;
j
<=
100
;
j
++)
{
int
k
=
target
-
i
-
j
;
if
(
k
>
100
||
k
<
0
)
continue
;
if
(
i
==
j
&&
j
==
k
)
res
+=
c
[
i
]
*
(
c
[
i
]
-
1
)
*
(
c
[
i
]
-
2
)
/
6
;
else
if
(
i
==
j
&&
j
!=
k
)
res
+=
c
[
i
]
*
(
c
[
i
]
-
1
)
/
2
*
c
[
k
];
else
if
(
j
<
k
)
res
+=
c
[
i
]
*
c
[
j
]
*
c
[
k
];
}
return
(
int
)(
res
%
(
1
e9
+
7
));
}
}
code/lc978.java
0 → 100644
浏览文件 @
71a611aa
package
code
;
/*
* 978. Longest Turbulent Subarray
* 题意:小,大,小,大 这种最大长度是多少
* 难度:Medium
* 分类:Array, Dynamic Porgramming, Sliding Windows
* 思路:O(n) 遍历一遍就能解决,不用dp
* Tips:lc53
*/
public
class
lc978
{
public
int
maxTurbulenceSize
(
int
[]
A
)
{
int
inc
=
1
,
dec
=
1
,
result
=
1
;
for
(
int
i
=
1
;
i
<
A
.
length
;
i
++)
{
if
(
A
[
i
]
<
A
[
i
-
1
])
{
// +1 并且重置另一个统计量
dec
=
inc
+
1
;
inc
=
1
;
}
else
if
(
A
[
i
]
>
A
[
i
-
1
])
{
inc
=
dec
+
1
;
dec
=
1
;
}
else
{
inc
=
1
;
dec
=
1
;
}
result
=
Math
.
max
(
result
,
Math
.
max
(
dec
,
inc
));
}
return
result
;
}
}
readme.md
浏览文件 @
71a611aa
...
...
@@ -98,6 +98,7 @@ LeetCode 指南
| 104
[
Java
](
./code/lc104.java
)
| 105
[
Java
](
./code/lc105.java
)
| 108
[
Java
](
./code/lc108.java
)
| 112
[
Java
](
./code/lc112.java
)
| 113
[
Java
](
./code/lc113.java
)
| 114
[
Java
](
./code/lc114.java
)
| 116
[
Java
](
./code/lc116.java
)
...
...
@@ -111,6 +112,7 @@ LeetCode 指南
| 125
[
Java
](
./code/lc125.java
)
| 127
[
Java
](
./code/lc127.java
)
| 128
[
Java
](
./code/lc128.java
)
| 129
[
Java
](
./code/lc129.java
)
| 130
[
Java
](
./code/lc130.java
)
| 131
[
Java
](
./code/lc131.java
)
| 134
[
Java
](
./code/lc134.java
)
...
...
@@ -126,6 +128,7 @@ LeetCode 指南
| 148
[
Java
](
./code/lc148.java
)
| 149
[
Java
](
./code/lc149.java
)
| 150
[
Java
](
./code/lc150.java
)
| 151
[
Java
](
./code/lc151.java
)
| 152
[
Java
](
./code/lc152.java
)
| 155
[
Java
](
./code/lc155.java
)
| 160
[
Java
](
./code/lc160.java
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录