| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> leetcode-序列和为K的数量-对前缀和和哈希代码的分析 -> 正文阅读 |
|
[数据结构与算法]leetcode-序列和为K的数量-对前缀和和哈希代码的分析 |
本题与主站 560?题相同:?https://leetcode.cn/problems/subarray-sum-equals-k/ 代码不是自己code出来的,对大佬写的算法的总结:
其实本题的思路就是,当循环遍历到
n
u
m
s
[
i
]
nums[i]
nums[i]的时候。查看前面是否存在和为
k
?
n
u
m
s
[
i
]
k-nums[i]
k?nums[i]的前缀,我们可以称之为
n
u
m
s
[
j
]
,
j
∈
{
1
,
2
,
.
.
.
,
i
}
nums[j], j \in \{1,2,...,i\}
nums[j],j∈{1,2,...,i}。
s
u
m
[
i
]
sum[i]
sum[i]表示前i项的和,通过变形,可以推出,
s
u
m
[
i
]
=
s
u
m
[
i
?
1
]
+
n
u
m
s
[
i
]
sum[i] = sum[i-1] + nums[i]
sum[i]=sum[i?1]+nums[i]。 那么如果字典中存在值为:
s
u
m
[
i
?
1
]
+
n
u
m
s
[
i
]
?
k
sum[i-1] + nums[i] - k
sum[i?1]+nums[i]?k的键,使得键
∑
i
=
0
?
n
u
m
s
[
i
]
\sum_{i=0}^?nums[i]
∑i=0??nums[i] =
s
u
m
[
i
?
1
]
+
n
u
m
s
[
i
]
?
k
sum[i-1] + nums[i] - k
sum[i?1]+nums[i]?k。通过移项,就是
k
=
s
u
m
[
i
?
1
]
+
n
u
m
s
[
i
]
?
∑
i
=
0
?
n
u
m
s
[
i
]
k = sum[i-1] + nums[i] -\sum_{i=0}^{?}nums[i]
k=sum[i?1]+nums[i]?∑i=0??nums[i],意义上,就是在
∑
i
=
?
i
n
u
m
s
[
i
]
=
k
\sum_{i=?}^{i}nums[i] = k
∑i=?i?nums[i]=k确实是连续子空间。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:38:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |