力扣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;
      }
  };
相关推荐
闲人不梦卿几秒前
数组和矩阵以及广义表
数据结构
假女吖☌8 分钟前
限流算法-redis实现与java实现
java·redis·算法
蒟蒻的贤10 分钟前
两数之和。
算法
wen__xvn22 分钟前
代码随想录算法训练营DAY27第八章 贪心算法 part01
算法·贪心算法
We་ct35 分钟前
LeetCode 125. 验证回文串:双指针解法全解析与优化
前端·算法·leetcode·typescript
客卿12338 分钟前
力扣20-有效括号(多家面试题)
算法·leetcode·职场和发展
木井巳1 小时前
【递归算法】快速幂解决 pow(x,n)
java·算法·leetcode·深度优先
苦藤新鸡1 小时前
41.有序数组(二叉搜索树)转平衡二叉树
数据结构·力扣
Maỿbe1 小时前
重走力扣hot的矩阵
算法·leetcode·矩阵
朔北之忘 Clancy1 小时前
2025 年 12 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·算法·青少年编程·题解