Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
NoComments
leetcode
提交
e8d1b352
L
leetcode
项目概览
NoComments
/
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 搜索 >>
提交
e8d1b352
编写于
3月 08, 2019
作者:
L
liu13
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
20190308
上级
b8d2f7ed
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
99 addition
and
5 deletion
+99
-5
code/lc14.java
code/lc14.java
+1
-1
code/lc20.java
code/lc20.java
+15
-0
code/lc23.java
code/lc23.java
+1
-0
code/lc263.java
code/lc263.java
+19
-0
code/lc264.java
code/lc264.java
+29
-0
code/lc279.java
code/lc279.java
+1
-1
code/lc4.java
code/lc4.java
+1
-0
code/lc416.java
code/lc416.java
+28
-1
code/lc877.java
code/lc877.java
+1
-1
readme.md
readme.md
+3
-1
未找到文件。
code/lc14.java
浏览文件 @
e8d1b352
...
...
@@ -13,7 +13,7 @@ public class lc14 {
}
public
static
String
longestCommonPrefix
(
String
[]
strs
)
{
public
static
String
longestCommonPrefix
(
String
[]
strs
)
{
//不是最优的方法,多做了比较
if
(
strs
.
length
==
0
)
return
""
;
Arrays
.
sort
(
strs
);
...
...
code/lc20.java
浏览文件 @
e8d1b352
...
...
@@ -36,4 +36,19 @@ public class lc20 {
return
true
;
return
false
;
}
public
boolean
isValid2
(
String
s
)
{
Stack
<
Character
>
stack
=
new
Stack
<
Character
>();
for
(
char
c
:
s
.
toCharArray
())
{
if
(
c
==
'('
)
stack
.
push
(
')'
);
else
if
(
c
==
'{'
)
stack
.
push
(
'}'
);
else
if
(
c
==
'['
)
stack
.
push
(
']'
);
else
if
(
stack
.
isEmpty
()
||
stack
.
pop
()
!=
c
)
return
false
;
}
return
stack
.
isEmpty
();
}
}
code/lc23.java
浏览文件 @
e8d1b352
...
...
@@ -11,6 +11,7 @@ import java.util.PriorityQueue;
* 分类:Linked List, Divide and Conquer, Heap
* 思路:优先队列或分治方法
* 注意:优先队列如何定义比较方法
* lc378, lc264
*/
public
class
lc23
{
public
class
ListNode
{
...
...
code/lc263.java
0 → 100644
浏览文件 @
e8d1b352
package
code
;
/*
* 263. Ugly Number
* 题意:因子只包含2,3,5的数称为丑数
* 难度:Easy
* 分类:Math
* 思路:
* Tips:
*/
public
class
lc263
{
public
boolean
isUgly
(
int
num
)
{
if
(
num
==
0
)
return
false
;
if
(
num
==
1
)
return
true
;
while
(
num
%
2
==
0
)
num
/=
2
;
while
(
num
%
3
==
0
)
num
/=
3
;
while
(
num
%
5
==
0
)
num
/=
5
;
return
num
==
1
;
}
}
code/lc264.java
0 → 100644
浏览文件 @
e8d1b352
package
code
;
import
java.util.PriorityQueue
;
/*
* 264. Ugly Number II
* 题意:因子只包含2,3,5的数称为丑数,求第n个丑数
* 难度:Medium
* 分类:Math, Heap, Dynamic Programming
* 思路:丑数乘以2,3,或5还是丑数
* Tips:注意可能存在重复的数字,和溢出
* lc23, lc378
*/
public
class
lc264
{
public
int
nthUglyNumber
(
int
n
)
{
PriorityQueue
<
Long
>
pr
=
new
PriorityQueue
<>();
//用Long,防止溢出
pr
.
add
(
1L
);
long
res
=
0
;
while
(
n
>
0
){
res
=
pr
.
remove
();
while
(
pr
.
size
()>
0
&&
pr
.
peek
()==
res
)
pr
.
remove
();
//注意可能存在重复的数字
pr
.
add
(
res
*
2
);
pr
.
add
(
res
*
3
);
pr
.
add
(
res
*
5
);
n
--;
}
return
(
int
)
res
;
}
}
code/lc279.java
浏览文件 @
e8d1b352
...
...
@@ -16,7 +16,7 @@ public class lc279 {
public
static
int
numSquares
(
int
n
)
{
int
[]
dp
=
new
int
[
n
];
Arrays
.
fill
(
dp
,
Integer
.
MAX_VALUE
);
for
(
int
i
=
1
;
i
<=
n
;
i
++)
{
for
(
int
i
=
1
;
i
<=
n
;
i
++)
{
//两个for循环
for
(
int
j
=
1
;
j
<=
i
;
j
++)
{
if
(
j
*
j
==
i
)
dp
[
i
-
1
]
=
1
;
...
...
code/lc4.java
浏览文件 @
e8d1b352
...
...
@@ -5,6 +5,7 @@ package code;
* 难度:Hard
* 分类:Array, Binary Search, Divide and Conquer
* 注意:两个数组长度可能不一样;边际问题
* 复杂度是 O(log(min(m,n)) ,在短的数组上二分查找即可
*/
public
class
lc4
{
public
static
void
main
(
String
[]
args
)
{
...
...
code/lc416.java
浏览文件 @
e8d1b352
...
...
@@ -16,7 +16,7 @@ public class lc416 {
int
[]
nums
=
{
1
,
2
,
5
};
System
.
out
.
println
(
canPartition
(
nums
));
}
public
static
boolean
canPartition
(
int
[]
nums
)
{
public
static
boolean
canPartition
(
int
[]
nums
)
{
//自己写的不知道什么,回头看已经看不懂自己的代码了。。。
int
sum
=
0
;
for
(
int
i
:
nums
)
{
sum
+=
i
;
...
...
@@ -39,4 +39,31 @@ public class lc416 {
}
return
false
;
}
public
boolean
canPartition2
(
int
[]
nums
)
{
// check edge case
if
(
nums
==
null
||
nums
.
length
==
0
)
{
return
true
;
}
// preprocess
int
volumn
=
0
;
for
(
int
num
:
nums
)
{
volumn
+=
num
;
}
if
(
volumn
%
2
!=
0
)
{
return
false
;
}
volumn
/=
2
;
// dp def
boolean
[]
dp
=
new
boolean
[
volumn
+
1
];
// dp init
dp
[
0
]
=
true
;
// dp transition
for
(
int
i
=
1
;
i
<=
nums
.
length
;
i
++)
{
for
(
int
j
=
volumn
;
j
>=
nums
[
i
-
1
];
j
--)
{
//从后往前更新,压缩空间
dp
[
j
]
=
dp
[
j
]
||
dp
[
j
-
nums
[
i
-
1
]];
}
}
return
dp
[
volumn
];
}
}
code/lc877.java
浏览文件 @
e8d1b352
...
...
@@ -6,7 +6,7 @@ package code;
* 分类:Math, Dynamic Programming, Minimax
* 思路:之前做过有印象,先拿的人一定赢的。
* dp的思路需要借鉴一下的, dp[i][j] 表示数组 i~j 的最优解
* 向两边拓展的dp, 用一个变量表示 size 这个dp。想想一下三角形的区域是怎么一步步被填满的
* 向两边拓展的dp, 用一个变量表示 size 这个dp。想想一下三角形的区域是怎么一步步被填满的
,斜线斜线的,最后是一个点
* 拿了piles[i], 则dp[i+1][j]就被另一个人拿了,结果是 piles[i] - dp[i + 1][j]
* 拿了piles[j], 则dp[i][j-1]就被另一个人拿了,结果是 piles[j] - dp[i][j - 1]
* Tips:
...
...
readme.md
浏览文件 @
e8d1b352
...
...
@@ -5,7 +5,7 @@ LeetCode 指南
-
说明: 每道题在代码头部都添加了我的解题思路和批注,Eg:
/*
/*
****
* 287. Find the Duplicate Number
* 题意:n+1个数属于[1~n],找出重复的那个数
* 难度:Medium
...
...
@@ -149,6 +149,8 @@ LeetCode 指南
| 239
[
Java
](
./code/lc239.java
)
| 240
[
Java
](
./code/lc240.java
)
| 242
[
Java
](
./code/lc242.java
)
| 263
[
Java
](
./code/lc263.java
)
| 264
[
Java
](
./code/lc264.java
)
| 268
[
Java
](
./code/lc268.java
)
| 279
[
Java
](
./code/lc279.java
)
| 283
[
Java
](
./code/lc283.java
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录