• LeetCode hot100-10


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

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

    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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    官方解法
    和最开始做的几道题很像,都是用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)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    Laravel Valet - macOS 极简主义者的开发环境
    Java面试题(每天10题)-------连载(31)
    【vue基础】黑马vue视频笔记(四)
    6线SPI传输模式探索
    3.字符串
    为什么要考NISP
    [附源码]计算机毕业设计物品捎带系统Springboot程序
    Black Friday案例分析
    javaweb Mybatis 配置 代理开发 案例分析 增删改查 动态SQL
    打印数组的所有子集
  • 原文地址:https://blog.csdn.net/alike_meng/article/details/136679041