Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
CS-Notes
提交
09294c46
C
CS-Notes
项目概览
wushizhenking
/
CS-Notes
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CS-Notes
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
09294c46
编写于
9月 19, 2018
作者:
郑
郑永川
提交者:
GitHub
9月 19, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #425 from youmark/master
Fix issues in House Robber and Minimum Path Sum sample code
上级
b37eb4d0
497812bd
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
13 addition
and
22 deletion
+13
-22
notes/Leetcode 题解.md
notes/Leetcode 题解.md
+13
-22
未找到文件。
notes/Leetcode 题解.md
浏览文件 @
09294c46
...
...
@@ -2415,27 +2415,19 @@ public int climbStairs(int n) {
定义 dp 数组用来存储最大的抢劫量,其中 dp[i] 表示抢到第 i 个住户时的最大抢劫量。
由于不能抢劫邻近住户,因此如果抢劫了第 i 个住户那么只能抢劫 i - 2 或者 i - 3 的住户,所以
<div
align=
"center"
><img
src=
"https://latex.codecogs.com/gif.latex?dp[i]=max(dp[i-2],dp[i-3])+nums[i]"
/></div>
<br>
dp[i] = max(dp[i-1], dp[i-2] + nums[i])
<br>
```
java
public
int
rob
(
int
[]
nums
)
{
int
n
=
nums
.
length
;
if
(
n
==
0
)
{
return
0
;
}
if
(
n
==
1
)
{
return
nums
[
0
];
}
int
pre3
=
0
,
pre2
=
0
,
pre1
=
0
;
for
(
int
i
=
0
;
i
<
n
;
i
++)
{
int
cur
=
Math
.
max
(
pre2
,
pre3
)
+
nums
[
i
];
pre3
=
pre2
;
int
pre2
=
0
,
pre1
=
0
;
for
(
int
i
=
0
;
i
<
nums
.
length
;
i
++)
{
int
cur
=
Math
.
max
(
pre2
+
nums
[
i
],
pre1
);
pre2
=
pre1
;
pre1
=
cur
;
}
return
Math
.
max
(
pre1
,
pre2
)
;
return
pre1
;
}
```
**强盗在环形街区抢劫**
...
...
@@ -2443,7 +2435,7 @@ public int rob(int[] nums) {
[
213. House Robber II (Medium)
](
https://leetcode.com/problems/house-robber-ii/description/
)
```
java
public
int
rob
(
int
[]
nums
)
{
public
int
rob
(
int
[]
nums
)
{
if
(
nums
==
null
||
nums
.
length
==
0
)
{
return
0
;
}
...
...
@@ -2454,15 +2446,14 @@ public int rob(int[] nums) {
return
Math
.
max
(
rob
(
nums
,
0
,
n
-
2
),
rob
(
nums
,
1
,
n
-
1
));
}
private
int
rob
(
int
[]
nums
,
int
first
,
int
last
)
{
int
pre
3
=
0
,
pre
2
=
0
,
pre1
=
0
;
private
int
rob
(
int
[]
nums
,
int
first
,
int
last
)
{
int
pre2
=
0
,
pre1
=
0
;
for
(
int
i
=
first
;
i
<=
last
;
i
++)
{
int
cur
=
Math
.
max
(
pre3
,
pre2
)
+
nums
[
i
];
pre3
=
pre2
;
int
cur
=
Math
.
max
(
pre1
,
pre2
+
nums
[
i
]);
pre2
=
pre1
;
pre1
=
cur
;
}
return
Math
.
max
(
pre2
,
pre1
)
;
return
pre1
;
}
```
...
...
@@ -2514,9 +2505,9 @@ public int minPathSum(int[][] grid) {
for
(
int
i
=
0
;
i
<
m
;
i
++)
{
for
(
int
j
=
0
;
j
<
n
;
j
++)
{
if
(
i
==
0
)
{
dp
[
j
]
=
dp
[
j
-
1
];
if
(
j
>
0
)
dp
[
j
]
=
dp
[
j
-
1
];
}
else
{
dp
[
j
]
=
Math
.
min
(
dp
[
j
-
1
],
dp
[
j
]);
if
(
j
>
0
)
dp
[
j
]
=
Math
.
min
(
dp
[
j
-
1
],
dp
[
j
]);
}
dp
[
j
]
+=
grid
[
i
][
j
];
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录