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

LeetCode hot100-10

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

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

我的解法,就是很简单的那种两层循环,没啥好说的。这题是不会超时,能通过。

class Solution {
    public int subarraySum(int[] nums, int k) {
        int total = 0;
        for (int i = 0; i < nums.length; i++) {
            int j = i + 1;
            int sum = nums[i];
            if(sum == k){
                total++;
            }
            while (j < nums.length) {
                sum += nums[j];
                if (sum == k) {
                    total++;
                }
                j++;
            }
        }
        return total;
    }
}

官方解法
和最开始做的几道题很像,都是用map来减少一层循环。但是这题还多了一些弯弯。思想就是从数组下标0到数据下标i,这一串数字的和记为sum1,从数据从数组下标0到数据下标j,这一串数字的和记为sum2。如果sum2-sum1=k的话,下标i+1到j就是一个符合条件的字数组。
编码时就是把各个和存进map的key,value存的是这个和出现的次数。

public class Solution {
    public int subarraySum(int[] nums, int k) {
        int count = 0, pre = 0;
        HashMap < Integer, Integer > mp = new HashMap < > ();
        mp.put(0, 1);
        for (int i = 0; i < nums.length; i++) {
            pre += nums[i];
            if (mp.containsKey(pre - k)) {
                count += mp.get(pre - k);
            }
            mp.put(pre, mp.getOrDefault(pre, 0) + 1);
        }
        return count;
    }
}

作者:力扣官方题解
链接:https://leetcode.cn/problems/subarray-sum-equals-k/solutions/238572/he-wei-kde-zi-shu-zu-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

http://www.kler.cn/a/271282.html

相关文章:

  • 四连杆机构运动学仿真 | 【Matlab源码+理论公式文本】
  • 布隆过滤器原理介绍和典型应用案例
  • LeetCode 2684.矩阵中移动的最大次数:一列一列处理,只记能到哪行(BFS)
  • 计算机网络-概述
  • 蓝桥杯第八届A组:分巧克力
  • 开源导出html表格项目-easyHtml
  • mac电脑修改终端zsh显示的用户名
  • Android Selinux详解[四]--新增服务标签相关
  • 【PyTorch】成功解决ModuleNotFoundError: No module named ‘torch’
  • 每天学习一个Linux命令之scp
  • 【渗透测试】redis漏洞利用
  • 【强化学习笔记一】初识强化学习(定义、应用、分类、性能指标、小车上山案例及代码)
  • cesiumlab中shp转3dtiles白模效果一
  • nginx实时流量拷贝ngx_http_mirror_module
  • 日期与时间(Java)
  • 使用Thymeleaf-没有js的html模板导出为pdf
  • MongoDB——linux中yum命令安装及配置
  • 代码分支管理
  • 实现兼容性良好的前端页面开发
  • Android中的设计模式---单例模式