当前位置: 首页 > news >正文

【LeetCode刷题】前缀和解决问题:560.和为k的子数组

【LeetCode刷题】Day 16

  • 题目1:560.和为k的子数组
    • 思路分析:
    • 思路1:前缀和 + 哈希表

在这里插入图片描述

题目1:560.和为k的子数组

在这里插入图片描述

思路分析:

问题1:怎样找到数组所有子数组?

方式一:暴力枚举出来,以i开始,列出以i开头的所有子数组[i,j](i <= j<= size-1)再i++,列出下一个位置开头的所有子数组。

方式二:前缀和思想,我们用dp[i]来表示[0,i]的数组,要找以i结尾的所有子数组,只需要 dp[i]-dp[j](0<= j <= i-1) 就可以表示所有以i结尾的子数组

下图就这题引入:
请添加图片描述

在这里插入图片描述
问题2:为什么这样转换?

因为在求以i结尾的所有子数组的和时,i和k是不变的,他们的差值也是固定值,所以问题就转换为:前缀和为k的数量,注意: 0<= j <=i-1

问题3:怎样不创建前缀和数组,但统计数量?

用一个int sum来就可以实现,再加上哈希表,就能解决这些问题。

思路1:前缀和 + 哈希表

代码实现:

class Solution {
public:int subarraySum(vector<int>& nums, int k) {//前缀和+哈希表unordered_map<int,int> hash;int sum=0 , ret=0;//处理当sum[i]本身等于k的情况hash[0] = 1;for(auto i : nums){sum+=i;//判断是否存在值为sum-k的key,有就加数量if(hash.count(sum - k)) ret+=hash[sum-k];hash[sum]++;}return ret;}
};

LeetCode链接:560.和为k的子数组

相关文章:

  • 计算机二级Access选择题考点
  • openGauss学习笔记-300 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQL Rewriter SQL语句改写
  • 使用超声波麦克风阵列预测数控机床刀具磨损
  • QUIC 和 TCP: 深入解析为什么 QUIC 更胜一筹
  • Spark学习——不同模式下执行脚本
  • 机器学习与数据挖掘知识点总结(二)分类算法
  • 如何翻译和本地化游戏?翻译访谈
  • 低功耗蓝牙ble开发(一)——bluez介绍及源码分析
  • 【C语言】递归复杂度与链表OJ之双指针
  • 流量暴增如何应对?漏桶限流算法,让你轻松应对流量高峰!揭晓标准代码,超乎想象的稳定、简单!
  • qt仿制qq登录界面
  • 牛客链表刷题(一)
  • I/O Stream设计实验
  • QT 使用资源文件的注意点
  • C# 通过Path获取后缀,文件名,目录等
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Angular2开发踩坑系列-生产环境编译
  • Github访问慢解决办法
  • If…else
  • IOS评论框不贴底(ios12新bug)
  • JavaScript设计模式之工厂模式
  • js面向对象
  • js正则,这点儿就够用了
  • Laravel核心解读--Facades
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Node + FFmpeg 实现Canvas动画导出视频
  • PhantomJS 安装
  • TCP拥塞控制
  • vue-router的history模式发布配置
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 构建工具 - 收藏集 - 掘金
  • 京东美团研发面经
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 算法-插入排序
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 自动记录MySQL慢查询快照脚本
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • # dbt source dbt source freshness命令详解
  • #stm32整理(一)flash读写
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (14)Hive调优——合并小文件
  • (2)STM32单片机上位机
  • (9)STL算法之逆转旋转
  • (C语言)fread与fwrite详解
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (办公)springboot配置aop处理请求.
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (六)c52学习之旅-独立按键
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十七)、Mac 安装k8s