• Leetcode 523.连续的子数组和


    连续的子数组和

    给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数

    示例 1:

    输入: [23,2,4,6,7], k = 6

    输出: True

    解释: [2,4] 是一个大小为 2 的子数组,并且和为 6。

    示例 2:

    输入: [23,2,6,4,7], k = 6

    输出: True

    解释: [23,2,6,4,7]是大小为 5 的子数组,并且和为 42。

    说明:

    1. 数组的长度不会超过10,000。
    2. 你可以认为所有数字总和在 32 位有符号整数范围内。

    同余的两段相减后的段和模k必为0

     1 import java.util.HashMap;
     2 
     3 public class Solution {
     4     public boolean checkSubarraySum(int[] nums, int k) {
     5         HashMap<Integer, Integer> map = new HashMap();
     6         map.put(0, -1);
     7         int sum = 0;
     8         for (int i = 0; i < nums.length; i++) {
     9             sum += nums[i];
    10             Integer prev = map.get(k == 0 ? sum : sum % k);
    11             if (prev != null) {
    12                 if (i - prev > 1) {
    13                     return true;
    14                 }
    15             } else {
    16                 map.put(k == 0 ? sum : sum % k, i);
    17             }
    18         }
    19         return false;
    20     }
    21 }
  • 相关阅读:
    从零开始unity3D (1) 折腾环境
    QT环境搭建 (1)
    wpf调用VC++ dll
    Bluetooth 笔记(摘抄)
    android (SharedPreferences、Intent)笔记
    黄油刀使用笔记
    mavlink安装
    Eclipse alt+/ 失效 解决
    Spring IOC, DI, AOP 原理和实现
    工程目录结构
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10372534.html
Copyright © 2020-2023  润新知