【LeetCode笔记】560. 和为K的子数组(Java、前缀和、哈希表)

文章目录

题目描述

  • 第一道前缀和题目~
    在这里插入图片描述

思路 & 代码

暴力法 O(n2n^2n2)

  • 固定一个值,从后往前找满足的条件即可
class Solution {public int subarraySum(int[] nums, int k) {int ans = 0;for(int i = 0; i < nums.length; i++){int temp = 0;for(int j = i; j >= 0; j--){temp += nums[j];if(temp == k){ans++;}}}return ans;}
}

前缀和 + 哈希表 O(n)

  • 连续子数组值 = preNum[j] - preNum[i],很巧妙
  • 一次遍历动态哈希,一边维护一边找~
class Solution {public int subarraySum(int[] nums, int k) {// 前缀和 & 哈希表(前缀和值 - 出现次数)Map<Integer, Integer> hashmap = new HashMap<>();// 代表第一个元素的前缀和,初始化hashmap.put(0, 1);int preSum = 0;int ans = 0;for(int num : nums){preSum += num;// 如果之前有满足的前缀和(注意是 preSum - k)if(hashmap.containsKey(preSum - k)){ans += hashmap.get(preSum - k);}// 维护哈希表hashmap.put(preSum, hashmap.getOrDefault(preSum, 0) + 1);}return ans;}
}

二刷

  • 才发现对前缀和这个概念不是很熟悉…
  • 说实话我觉得这题代码相对抽象,有必要用点简单例子人脑走一遍:
  • 比如 map.put(0, 1) 这一行(比如[1, 1], 2。没有这一行就直接得 0 了)
  • (虽然图片有点丑,但是请勉强看看吧 = = )
  • 这么个意思,累加 sum,如果发现当前 sum,在 - k 之后的值,曾经出现过,那么说明存在图中连续的橙色子数组,满足累加和 = k
    在这里插入图片描述
class Solution {public int subarraySum(int[] nums, int k) {Map<Integer, Integer> map = new HashMap<>();map.put(0, 1);int sum = 0, res = 0;for(int temp : nums) {sum += temp;if(map.containsKey(sum - k)) {res += map.get(sum - k);}map.put(sum, map.getOrDefault(sum, 0) + 1);}return res;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

caffe不支持relu6_国产AI框架再进化!百度Paddle Lite发布:率先支持华为NPU在线编译,全新架构更多硬件支持...

乾明 边策 发自 凹非寺 量子位 报道 | 公众号 QbitAI国产AI框架飞桨刚刚带来新进化&#xff1a;Paddle Lite正式发布&#xff01;高扩展、高性能、轻量化&#xff0c;还是首个支持华为NPU在线编译的深度学习端侧推理框架&#xff0c;剑指加大力度攻占移动端侧场景。而且大环境如…

【LeetCode笔记】1143. 最长公共子序列(Java、动态规划、字符串)

文章目录题目描述思路 & 代码二刷三刷题目描述 算是很高频的面试题了&#xff0c;而且题号还挺后的 思路 & 代码 注意&#xff1a;dp[i]][j] 和 charAt(i) 有1的下标差&#xff08;dp初始化边界&#xff09;核心思想&#xff1a;当前值可构成新的最大子串就左上角值…

【LeetCode笔记】139. 单词拆分(Java、动态规划、字符串、哈希表)

文章目录题目描述思路 & 代码二刷更新题目描述 漏网之题。。一个月前写的居然没写博客 思路 & 代码 HashSet 存储 word&#xff0c;便于查询动态规划三要素在注释中思路&#xff1a;如果dp[j] true且[j1,i]可以组成单词&#xff0c;则dp[i] true class Solution…

mysqlfor循环中出错继续_Python学习笔记(循环)

循环语句1. while 循环while语句最基本的形式包括一个位于顶部的布尔表达式&#xff0c;一个或多个属于while代码块的缩进语句。while 布尔表达式:代码块while循环的代码块会一直循环执行&#xff0c;直到布尔表达式的值为布尔假。如果布尔表达式不带有<、>、、&#xff…

bootstrap table格式化字符串_你要的PHP字符串处理函数都在这了!

php中文网最新课程每日17点准时技术干货分享打印输出函数说明echo输出一个或多个字符串print输出字符串printf输出格式化字符串sprintfReturn a formatted stringfprintf将格式化后的字符串写入到流sscanf根据指定格式解析输入的字符vfprintf将格式化字符串写入流vprintf输出格…

【LeetCode笔记】35. 搜索插入位置(Java、二分法)

文章目录题目描述思路 & 代码Summary二刷题目描述 考虑了一下&#xff0c;还是把这道题作为单独一篇文了。主要是配合这篇题解一起理解二分法&#xff0c;实践太少理解还不够透彻&#xff0c;还是要温故知新 思路 & 代码 先贴代码&#xff0c;结合注释和下面的总结…

【LeetCode笔记】300. 最长递增子序列(Java、动态规划、二分法、贪心)

文章目录题目描述思路 & 代码动态规划 O(n2n^2n2)动态规划 二分法 贪心 O(nlognnlognnlogn)二刷题目描述 难点在于时间复杂度 O(n * logn&#xff09;的做法 思路 & 代码 动态规划 O(n2n^2n2) 先抛砖引玉啦&#xff5e;dp[i]&#xff1a;以 nums[i] 结尾的子序…

zabbix内网安装部署_zabbix2.4.8升级3.0.31操作部署记录

1. 安装软件准备1.1. 软件准备1.zabbix-2.4.8.tar.gz zabbix-3.0.31.tar.gz下载地址&#xff1a;https://www.zabbix.com/download2.php5.4.16.tar.gz下载地址&#xff1a;https://www.php.net/downloads.php1.2. 注意事项安装过程路径、密码尽量不要出现中文、特殊字符、空格、…

【LeetCode笔记】剑指 Offer 03. 数组中重复的数字(Java、哈希表、原地算法)

文章目录题目描述思路 & 代码二刷题目描述 倒是和leetcode 287 寻找重复数很像。。但是不能使用那道题的快慢指针法&#xff08;也可能是我太菜了&#xff09;重点在于题干的描述【长度为 n 的数组&#xff0c;数字范围【0 &#xff5e; n - 1】 思路 & 代码 可以直…

回归问题的置信区间AUC_互助问答第193期:倾向得分匹配法与面板数据问题

问题一&#xff1a;老师您好&#xff01;我的问题是倾向得分匹配法之前要对匹配变量进行选择&#xff0c;我看见连玉君老师的一篇文章中主要是对处理变量和匹配变量做logit回归&#xff0c;然后根据准R方和AUC值判断&#xff0c;两者越大越好&#xff0c;通常来说AUC应该大于0.…

【LeetCode笔记】剑指 Offer 06. 从尾到头打印链表(Java、翻转链表)

文章目录题目描述思路 & 代码二刷题目描述 思路 & 代码 一次遍历&#xff1a;翻转链表 记录长度二次遍历&#xff1a;遍历翻转后的链表&#xff0c;更新数组O(n) & O(1) /*** Definition for singly-linked list.* public class ListNode {* int val;* …

guns 最新开源框架企业版下载_国内比较火的5款Java微服务开源项目

本文介绍国内比较火的5款Java微服务开源项目&#xff0c;pig是基于Spring Cloud、OAuth2.0、Vue的前后端分离的系统。 通用RBAC权限设计及其数据权限和分库分表 支持服务限流、动态路由、灰度发布、 支持常见登录方式&#xff0c; 多系统SSO登录。作者&#xff1a;程序员杨目录…

【LeetCode笔记】剑指 Offer 10-I. 斐波那契数列 (Java、递归、动态规划)

文章目录题目描述思路 & 代码递归动态规划二刷题目描述 呃&#xff5e;说来尴尬&#xff0c;在简单题栽跟头了 &#xff08;超时&#xff09;一般来说&#xff0c;这玩意是递归教学题了。但实际上会有很多重复的冗余步骤&#xff0c;实际上用动态规划效率会更高 思路 &…

addeventlistener事件参数_Vue的钩子事件和程序化侦听

对于Vue的事件机制&#xff0c;其实有一些高级技巧&#xff0c;我们最好能够掌握。一、组件的生命周期钩子事件Vue的生命周期函数&#xff0c;其实就是Vue开发者设定的一些hook钩子&#xff0c;你只要往hook里面编写代码&#xff0c;它就可以执行。如vue实例里的beforeCreate、…

【LeetCode笔记】剑指 Offer 13-. 机器人的运动范围 (Java、dfs)

文章目录题目描述思路 & 代码二刷题目描述 注意点&#xff1a;满足数位和大于 k 的格子&#xff0c;不一定可以从 [0, 0] 走到&#xff0c;因此实际上不满足条件 思路 & 代码 考虑到可达性问题&#xff0c;决定用 dfs 来一个个走&#xff0c;不能走 or 走过了就 re…

计算机专业大学排名_U.S.News全美大学排名出炉:UCLA超越伯克利;计算机MIT排第一,斯坦福跌出前四...

栗子 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI一年一度&#xff0c;USNews2020美国大学排名公布。前两位依然稳定&#xff0c;普林斯顿第一&#xff0c;哈佛第二。后面开始就有了变化&#xff0c;今年有三所学校并列第三&#xff1a;哥伦比亚大学、麻省理工学院 (MIT) 以…

【LeetCode笔记】剑指 Offer 15-. 二进制中1的个数 (Java、位运算)

文章目录题目描述思路 & 代码二刷题目描述 涉及二进制&#xff0c;位运算跑不了&#xff5e; 思路 & 代码 既然是32位&#xff0c;那么通过一次遍历&#xff0c;每次判断一个位是否为1即可 public class Solution {// you need to treat n as an unsigned valuepu…

apollo 配置中心_.NET Core 下使用 Apollo 配置中心

“Apollo(阿波罗)是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理应用不同环境、不同集群的配置&#xff0c;配置修改后能够实时推送到应用端&#xff0c;并且具备规范的权限、流程治理等特性&#xff0c;适用于微服务配置管理场景。服务端基于Spring Boot和Spr…

【LeetCode笔记】剑指 Offer 21-. 调整数组顺序使奇数位于偶数前面(Java、双指针)

文章目录题目描述思路 & 代码二刷题目描述 有点像快排的交换操作 思路 & 代码 类似快排中的找法&#xff0c;具体见代码注释 class Solution {public int[] exchange(int[] nums) {// 双指针啦&#xff5e;int left 0, right nums.length - 1;while(left < r…

【LeetCode笔记】剑指 Offer 26-. 树的子结构 (Java、双重dfs、二刷)

文章目录题目描述思路 & 代码二刷题目描述 思路很值得看的一道题&#xff0c;和之前路径总和 III的双递归思路、结构很像 思路 & 代码 isSubStructrue() 进行一个前序的遍历&#xff1b;通过 || 运算符&#xff0c;在找到时直接终止遍历具体函数功能、思路见代码注…