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

哪些网站可以做企业推广有什么推广软件

哪些网站可以做企业推广,有什么推广软件,最大的房产网站排名,空间域名续费 网站维护发票如何开[560. 和为 K 的子数组] 分析:正确的解法:前缀和 哈希表 (https://leetcode.cn/problems/subarray-sum-equals-k/) 已解答 中等 相关标签 相关企业 提示 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组…

[560. 和为 K 的子数组]

      • 分析:
      • 正确的解法:前缀和 + 哈希表

(https://leetcode.cn/problems/subarray-sum-equals-k/)

已解答

中等

相关标签

相关企业

提示

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数

子数组是数组中元素的连续非空序列。

示例 1:

输入:nums = [1,1,1], k = 2
输出:2

示例 2:

输入:nums = [1,2,3], k = 3
输出:2

提示:

  • 1 <= nums.length <= 2 * 104
  • -1000 <= nums[i] <= 1000
  • -107 <= k <= 107

分析:

没注意到要连续,好吧,我当成了背包问题。。。。附上代码(错误版本)

class Solution {
public:int subarraySum(vector<int>& nums, int k) {//vector<vector<int>> dp(nums.size(),0);vector<vector<int>> dp(nums.size(), vector<int>(k+1, 0));for(int i=0;i<=k;i++){if(nums[0]==i)dp[0][i]=1;}for(int i=0;i<nums.size();i++){dp[i][0]=1;}dp[0][0]=1;for(int i=1;i<nums.size();i++){for(int j=1;j<=k;j++){if(j-nums[i]>=0)dp[i][j]=dp[i-1][j]+dp[i-1][j-nums[i]];elsedp[i][j]=dp[i-1][j];}}return dp[nums.size()-1][k];}
};

方法又用错了,滑动窗口方法无法用于包含负数的队列。解答错误35 / 93 个通过的测试用例,提交于 2025.03.12 09:32

class Solution {
public:int subarraySum(vector<int>& nums, int k) {if(nums.size()==0)return 0;int i=0,j=1;int sum=nums[0];int ans=0;if(nums.size()==1&&sum==k){return 1;}while(i<nums.size()&&j<nums.size()){if(sum<k){sum+=nums[j];j++;}if(sum==k){ans++;sum-=nums[i];i++;}if(sum>k){sum-=nums[i];i++;}if(sum==k){ans++;sum-=nums[i];i++;}}while(i<nums.size()){if(sum==k){ans++;}sum-=nums[i];i++;}return ans;}
};

等于是,正数的样例被我通过了,带有负数的样例,没通过。

这个问题不能使用滑动窗口,因为 nums 可能包含负数,导致窗口无法通过简单的收缩/扩展来找到正确的子数组。

例如,[1, -1, 1],如果 k=1,滑动窗口会错误地跳过某些子数组。

正确的解法:前缀和 + 哈希表

我们可以用 前缀和 + 哈希表 来高效解决这个问题。

思路:

  • 维护一个 prefixSum(表示从数组起点到当前索引的和)。
  • 使用 unordered_map<int, int> 记录前缀和出现的次数。
  • 计算当前 prefixSum 时,检查 prefixSum - k 是否存在于哈希表中,若存在,则说明前面某一段子数组的和为 k,增加计数。
  • prefixSum 存入哈希表,以便后续计算。

说明:

  1. prefixSum[i] = nums[0] + nums[1] + ... + nums[i], prefixSum[i] 代表从 0 到 i 位置的 累积和。
  2. 任何子数组 nums[l] ... nums[r] 的和等于:`sum = prefixSum[r] - prefixSum[l-1]``
  3. ``prefixSum[r] - k == prefixSum[l-1]。说明 如果我们在前面某个位置 l-1 计算过 prefixSum[l-1],那么 prefixSum[r] - k应该等于prefixSum[l-1]`,这就意味着找到了一个和为 k 的子数组。
  4. 假设 prefixSum - k 之前出现了 多次,那么说明有 多个子数组 的和等于 k,我们需要把这些子数组全部计入答案。所以prefixSumCount 需要存次数,而不是简单存前缀和
class Solution {
public:int subarraySum(vector<int>& nums, int k) {unordered_map<int,int> preSumCount;preSumCount[0]=1;int preSum=0;int ans=0;for(auto& num:nums){preSum+=num;if(preSumCount.find(preSum-k)!=preSumCount.end()){ans+=preSumCount[preSum-k];}preSumCount[preSum]++;}return ans;}
};
http://www.dtcms.com/wzjs/257252.html

相关文章:

  • 做鞋用什么网站好国际实时新闻
  • 免费在线看片无线网络优化工程师
  • 自己做网站 为什么出现403企业网站怎么注册
  • 辽宁省城乡和建设厅网站百度推广授权代理商
  • 网站 建设 流行 数据库爱网站关键词挖掘工具
  • 网站开发技术概况网站生成
  • 网站的建设方面教育培训机构有哪些
  • 哪些网站可以做自媒体百度外链查询工具
  • 开通企业网站seo试用软件
  • WordPress免费外贸企业主题seo技术平台
  • 做视频自媒体要投稿几个网站云南网络推广seo代理公司
  • 章丘网站建设沈阳网站关键词排名
  • 小米路由器建设网站百度关键词怎么排名
  • 外贸网站建设哪里好软文推广文章
  • 做业精灵官方网站优化整站
  • 商城开发网站开发软文标题
  • 在网站上做封面推广游戏怎么拉人最快
  • 手机网站专题小程序推广平台
  • 做网站答辩总结范文百度投诉电话人工服务总部
  • c2c网站系统网络营销工作内容是什么
  • 手机网站加载效果手机创建网站免费注册
  • 免费企业网站如何建设市场营销策划ppt
  • 东莞网站建设设计价格天津百度seo
  • 护士证注册网站品牌推广营销
  • 深圳宝安做网站百度app安装免费下载
  • 如果在各大网站做免费的网络推广seo推广外包企业
  • css div旅游j景区网站模板十大免费cms建站系统介绍
  • 网站功能需求分析文档网上营销策略有哪些
  • com域名的网站百度搜索推广技巧
  • wordpress网页无法运作英文seo是什么