Swift前缀和+哈希表实现区间和为K的子数组计数算法
Swift 的数组算法里,前缀和加哈希表的组合挺常用的,效率高,逻辑也不绕。这篇文章讲的是怎么用 Swift 找出所有连续子数组,它们加起来正好等于 K。重点是用了一个前缀和数组,外加一个哈希表做辅助查找,速度一下子就上来了。适合你在刷题、比赛或者做一些统计类功能时用,场景还蛮多的。
数组的前缀和,听起来有点抽象,其实挺简单。比如你要找从某个位置开始,加到某个位置的和,预先算好前缀和后,只要做个减法就能得出区间和,省得每次都重算。
再配合一个哈希表,记录每个前缀和出现了几次。遍历数组时,顺便更新这个表,如果发现当前和减去目标 K 的结果在表里,那某个区间的和正好是 K。嗯,就是这么巧妙。
整段代码逻辑清晰,Swift 语法也直观,像Dictionary
、for-in
这些用法都比较友好。想提升算法题的解法思路,顺便练练 Swift,这篇文章还挺合适的。
如果你刷过类似“和为 K 的子数组”题型,想看看 Swift 怎么优雅实现,或者比赛要用 Swift 应战,建议看看这篇,思路值得借鉴。对了,还贴心给了点延伸阅读,像ndarray 前缀求和表
和哈希表应用案例
这种,顺手点进去也挺涨知识的。
使用时注意哈希表的初始值要设置好,比如先设[0: 1]
,这样才能从头开始就满足条件的情况,别漏了。
3.83KB
文件大小:
评论区