欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > ※※Leetcode Hot 100刷题记录 -Day8(和为k的子数组)

※※Leetcode Hot 100刷题记录 -Day8(和为k的子数组)

2025/6/9 21:47:08 来源:https://blog.csdn.net/weixin_45864705/article/details/141864047  浏览:    关键词:※※Leetcode Hot 100刷题记录 -Day8(和为k的子数组)

问题描述:

        给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。

示例 1:

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

示例 2:

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

解题思路:

560. 和为 K 的子数组 - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/subarray-sum-equals-k/solutions/238572/he-wei-kde-zi-shu-zu-by-leetcode-solution/?envType=study-plan-v2&envId=top-100-liked

//提交版
//注释掉的为暴力搜索版本
class Solution {public int subarraySum(int[] nums, int k) {// int count = 0;// for (int i = 0; i < nums.length; i++) {//     int sum = 0;//     for (int j = i; j >= 0; j--) {//         sum = sum + nums[j];//         if (sum == k) {//             count++;//         }//     }// }// return count;HashMap<Integer,Integer> hashMap = new HashMap<>();hashMap.put(0,1);int pre =0;int count =0;for (int i  =0;i<nums.length;i++){pre = pre + nums[i];if (hashMap.containsKey(pre-k)){count = count + hashMap.get(pre-k);}hashMap.put(pre,hashMap.getOrDefault(pre,0)+1);}return count;}
}//带有输入输出版本
import java.util.Arrays;
import java.util.HashMap;public class hot9_subarraySum {public int subarraySum(int[] nums, int k) {
//        int count = 0;
//        for (int i = 0; i < nums.length; i++) {
//            int sum = 0;
//            for (int j = i; j >= 0; j--) {
//                sum = sum + nums[j];
//                if (sum == k) {
//                    count++;
//                }
//            }
//        }
//        return count;HashMap<Integer,Integer> hashMap = new HashMap<>();hashMap.put(0,1);int pre =0;int count =0;for (int i  =0;i<nums.length;i++){pre = pre + nums[i];if (hashMap.containsKey(pre-k)){count = count + hashMap.get(pre-k);}hashMap.put(pre,hashMap.getOrDefault(pre,0)+1);}return count;}public static void main(String[] args){int[] nums = {3,4,7,2,-3,1,4,2};int k = 7;System.out.println("输入:" + Arrays.toString(nums)+"\t"+ "k="+k);hot9_subarraySum hot9SubarraySum = new hot9_subarraySum();int result = hot9SubarraySum.subarraySum(nums,k);System.out.println("输出:"+result);}
}

知识点总结:

  • 前缀+哈希表的解题思路(理解不透彻,二刷时注意)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词