本文主要是介绍力扣1590.使数组和能被P整除,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
力扣1590.使数组和能被P整除
-
同余
- 转化为求一段区间和余p为x
- i - j = x
- j = i - x
-
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;}};
这篇关于力扣1590.使数组和能被P整除的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!