力扣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;
      }
  };
相关推荐
G***669127 分钟前
算法设计模式:贪心与动态规划
算法·设计模式·动态规划
墨染点香43 分钟前
LeetCode 刷题【160. 相交链表】
算法·leetcode·链表
少睡点觉43 分钟前
LeetCode 238. 除自身以外数组的乘积 问题分析+解析
java·算法·leetcode
YoungHong199243 分钟前
面试经典150题[066]:分隔链表(LeetCode 86)
leetcode·链表·面试
952361 小时前
数据结构-二叉树
java·数据结构·学习
大千AI助手1 小时前
多叉树:核心概念、算法实现与全领域应用
人工智能·算法·决策树·机器学习··多叉树·大千ai助手
一只老丸1 小时前
HOT100题打卡第38天——贪心算法
算法·贪心算法
普通网友1 小时前
高性能TCP服务器设计
开发语言·c++·算法
醒过来摸鱼1 小时前
9.12 sinc插值
python·线性代数·算法·numpy
普通网友1 小时前
C++与硬件交互编程
开发语言·c++·算法