[Oracle] LeetCode 560 Subarray Sum Equals K 思维+Map
Given an array of integers nums
and an integer k
, return the total number of subarrays whose sum equals to k
.
A subarray is a contiguous non-empty sequence of elements within an array.
Solution
我们需要找到所有的区间:
那么我们使用前缀和 ,那么转变一下:
所以同样也是
点击查看代码
class Solution { private: unordered_map<int,int> mp; int prex[20002]; public: int subarraySum(vector<int>& nums, int k) { int n = nums.size(); int ans=0; prex[0]=nums[0]; for(int i=1;i<n;i++)prex[i]=nums[i]+prex[i-1]; for(int i=0;i<n;i++){ if(prex[i]==k)ans++; if(mp.find(prex[i]-k)!=mp.end())ans+=mp[prex[i]-k]; mp[prex[i]]++; } return ans; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端