1590. 使数组和能被 P 整除

1590. 使数组和能被 P 整除


题目链接:1590. 使数组和能被 P 整除

代码如下:

cpp 复制代码
class Solution {
public:
	int minSubarray(vector<int>& nums, int p) {
		int x = 0;
		for (auto num : nums) {
			x = (x + num) % p;
		}
		if (x == 0) {
			return 0;
		}
		unordered_map<int, int> index;
		int y = 0, res = nums.size();
		for (int i = 0;i < nums.size();i++) {
			index[y] = i;	// f[i] mod p = y, 因此哈希表记录 y 对应的下标为 i
			y = (y + nums[i]) % p;
			if (index.count((y - x + p) % p) > 0) {
				res = min(res, i - index[(y - x + p) % p] + 1);
			}
		}
		return res == nums.size() ? -1 : res;
	}
};
相关推荐
旖-旎1 小时前
《LeetCode 53 最大子数组和 || LeetCode 918 环形子数组的最大和》
c++·算法·leetcode·动态规划
王老师青少年编程3 小时前
csp信奥赛C++高频考点专项训练:【二分答案】案例2:木材加工
c++·二分答案·csp·高频考点·信奥赛·木材加工
aaPIXa6224 小时前
C++模板元编程:编译期计算Fibonacci数列
java·开发语言·c++
Augustzero4 小时前
`co_await` 按下暂停键之后:从零看懂 C++20 协程
c++·后端
知无不研5 小时前
c语言和c++中的静态关键字
开发语言·c++·静态关键字
思麟呀5 小时前
在C++基础上理解CSharp-7
java·jvm·c++·c#
2601_949818096 小时前
Vector从入门到应用(C++ STL动态数组万字全解
开发语言·c++
汉克老师6 小时前
GESP2026年6月认证C++八级( 第三部分编程题(1、线网建设))精讲
c++·最小生成树·排序·kruskal·并查集·gesp8级
胖大和尚6 小时前
Linux 内核工程师、HPC工程师、C++工程师
c++·kernel·hpc
chh5637 小时前
C++--list
开发语言·数据结构·c++·学习·算法·list