力扣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;
      }
  };
相关推荐
立志成为coding大牛的菜鸟.1 小时前
力扣139-单词拆分(Java详细题解)
java·算法·leetcode
星夜孤帆2 小时前
LeetCode之数组/字符串
java·算法·leetcode
present12272 小时前
利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注
算法·matlab·数据分析·学习方法
就这样很好8805 小时前
排序算法总结
java·算法·排序算法
weixin_486681145 小时前
C++系列-STL中find相关的算法
java·c++·算法
我是真爱学JAVA6 小时前
第四章 类和对象 课后训练(1)
java·开发语言·算法
Qiuner6 小时前
【机器学习】分类与回归——掌握两大核心算法的区别与应用
算法·机器学习·分类
oufoc6 小时前
第J1周:ResNet-50算法实战与解析
神经网络·算法·tensorflow
轩源源7 小时前
函数模板(初阶)
数据结构
想拿大厂offer7 小时前
【数据结构】第八节:链式二叉树
c语言·数据结构