zoukankan      html  css  js  c++  java
  • LeetCode0974.和可被K整除的子数组

    题目要求

    算法分析

    利用前缀和,只要统计前缀和之差可被K整除的子数组的个数即可,

    根据同余定理,两个前缀和a和b,若满足a-b能够被K整除,那么整数a与b对模K同余,

    于是可以根据同余的前缀和的数量,得到可被K整除的子数组数。

    代码展示(C#)

    public class Solution {
        Dictionary<int, int> dic = new Dictionary<int, int>();
        public int SubarraysDivByK(int[] A, int K)
        {
            int[] B = new int[A.Length+1];
            int temp = 0;
            B[0] = 0;
            dic.Add(0, 1);
            for (int i = 0; i < A.Length; i++)
            {
                B[i + 1] = B[i] + A[i];
                temp = B[i + 1] % K;
                if (temp < 0)
                {
                    temp += K;
                }
                if (dic.ContainsKey(temp))
                {
                    dic[temp]++;
                }
                else
                {
                    dic.Add(temp, 1);
                }
            }
            int result = 0;
            foreach (var item in dic)
            {
                result += item.Value * (item.Value - 1) / 2;
            }
            return result;
        }
    }

    提交结果

  • 相关阅读:
    排球运动规则简介
    我与计算机
    我和电脑的不解之缘
    作业
    怎样成为一个高手 观后感
    本周作业
    作业个人
    本周作业
    本周总结
    本周总结(13周)
  • 原文地址:https://www.cnblogs.com/KingR/p/12973371.html
Copyright © 2011-2022 走看看