zoukankan      html  css  js  c++  java
  • 560. Subarray Sum Equals K

    一、题目

      1、审题 

       

      2、分析

        给定一个整形数组。若存在连续的序列相加和为 k ,统计这样的序列的个数。

    二、解答

      方法一、

        时间复杂度: O(N^2),空间复杂度:O(1)

        ① 将所给数组 nums,连续元素相加。 nums[i] 代表下标 i 及i之前的元素之和。

        ② 采用 count 记录满足的序列个数。

        ③ 采用循环遍历数组 nums,若 nums[i] == K。 则 count++。 采用内循环,若 nums[j] - nums[i] == k ,则 count++

        ④ 返回 count

        public int subarraySum(int[] nums, int k) {
            int count = 0;
            for (int i = 1; i < nums.length; i++) 
                nums[i] += nums[i - 1];
            
            for (int i = 0; i < nums.length; i++) {
                if(nums[i] == k)
                    count++;
                for (int j = i + 1; j < nums.length; j++) {
                    if(nums[j] - nums[i] == k)
                        count++;
                }
            }
            return count;
        }

      方法二、

        采用一个 Map 存储。 key=sum, value=count;

        时间复杂度:O(N); 空间复杂度:O(N)

        

        public int subarraySum2(int[] nums, int k) {
            int sum = 0, result = 0;
            HashMap<Integer, Integer> preSum = new HashMap<>();
            preSum.put(0, 1);
            
            for (int i = 0; i < nums.length; i++) {
                sum += nums[i];
                result += preSum.getOrDefault(sum - k, 0);
                preSum.put(sum, preSum.getOrDefault(sum, 0) + 1);
            }
            
            return result;
        }
  • 相关阅读:
    「读书感悟」三体
    「PLC」PLC基本编程
    利用一个Demo说明Castle+NHibernate的实现
    采用jquery实现简单的计算器
    Html+css+Jquery模拟电影院购票
    Jquery实现简单的导航单并且经常使用
    H5的video元素实现的Demo
    JQuery编写的定时器实现时钟
    Castle.net
    1056. 组合数的和(15)
  • 原文地址:https://www.cnblogs.com/skillking/p/10936383.html
Copyright © 2011-2022 走看看