力扣1590.使数组和能被P整除

力扣1590.使数组和能被P整除

  • 同余

    • 转化为求一段区间和余p为x
    • i - j = x
      • j = i - x
cpp 复制代码
  class Solution {
  public:
      int minSubarray(vector<int>& nums, int p) {
          int x = accumulate(nums.begin(),nums.end(),0LL) % p;
          if(x == 0) return 0;
          int n = nums.size(),ans = n,s = 0;
          unordered_map<int,int> last{{s,-1}};
          for(int i=0;i<n;i++)
          {
              s = (s + nums[i]) % p;
              last[s] = i;
              auto it = last.find((s - x + p) % p);
              if(it != last.end())
                  ans = min(ans,i - it->second);
          }
          return ans < n ? ans : -1;
      }
  };
相关推荐
敲代码的苦138 小时前
头歌 数据结构—消防资源调度
数据结构·算法
ysu_03148 小时前
【C++ 进阶之路】(二)从内联函数到类与对象:深挖内存对齐、this 指针与三大默认成员函数
开发语言·数据结构·c++·笔记·面向对象·this
布莱克6058 小时前
C++ 中 set 与 map 的区别详解
开发语言·c++·算法·哈希
WJ.Polar8 小时前
异常、泛型、集合、Stream流
java·数据结构
lisw058 小时前
算法与软件的本质区别
驱动开发·算法·数学建模
我不会插花弄玉8 小时前
5.Hash 【由浅入深-redis】
redis·算法·哈希算法
Nuanyt8 小时前
LeetCode Hot 100 · 双指针 3 题 Java
java·笔记·算法·leetcode·双指针
志起计算机编程9 小时前
Clickhouse的几个关键优势
算法
重生之小比特9 小时前
【算法拾光 7】双指针|两数之和 II - 输入有序数组 + 三数之和
算法
Hello World . .9 小时前
【嵌入式学习笔记 Day 1】
linux·数据结构·笔记