【算法题】1590. 使数组和能被 P 整除

news/2023/6/6 3:24:05

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
坚持不懈,越努力越幸运,大家一起学习鸭~~~

题目:

给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空),使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。

请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回 -1 。

子数组 定义为原数组中连续的一组元素。

示例 1:

输入:nums = [3,1,4,2], p = 6
输出:1
解释:nums 中元素和为 10,不能被 p 整除。我们可以移除子数组 [4] ,剩余元素的和为 6 。
示例 2:

输入:nums = [6,3,5,2], p = 9
输出:2
解释:我们无法移除任何一个元素使得和被 9 整除,最优方案是移除子数组 [5,2] ,剩余元素为 [6,3],和为 9 。
示例 3:

输入:nums = [1,2,3], p = 3
输出:0
解释:和恰好为 6 ,已经能被 3 整除了。所以我们不需要移除任何元素。
示例 4:

输入:nums = [1,2,3], p = 7
输出:-1
解释:没有任何方案使得移除子数组后剩余元素的和被 7 整除。
示例 5:

输入:nums = [1000000000,1000000000,1000000000], p = 3
输出:0

提示:

1 <= nums.length <= 10^5
1 <= nums[i] <= 10^9
1 <= p <= 10^9

java代码:

class Solution {public int minSubarray(int[] nums, int p) {int mod = 0;for (int num : nums) {mod = (mod + num) % p;}if (mod == 0) {return 0;}int ans = Integer.MAX_VALUE;Map<Integer, Integer> map = new HashMap<>();map.put(0, -1);for (int i = 0, sum = 0; i < nums.length; i++) {sum = (sum + nums[i]) % p;int find = (sum - mod + p) % p;if (map.containsKey(find)) {ans = Math.min(ans, i - map.get(find));}map.put(sum, i);}return ans == Integer.MAX_VALUE || ans == nums.length ? -1 : ans;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4579833.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

Git小小入门

文章目录一、何为Git二、 Git安装和环境配置1、安装2、Linux常用命令3、Git环境配置三、Git基本理论1、Git记录的是什么2、三棵树3、工作流程四、Git创建项目1、工作日常的6个Git命令2、使用码云五&#xff0c;git集成idea1、idea配置2、创建仓库和提交码云普通的程序员是把很多…

这可能是简易的机器学习入门(小白必读)

本文用浅显易懂的语言精准概括了机器学习的相关知识&#xff0c;内容全面&#xff0c;总结到位&#xff0c;剖析了机器学习的what&#xff0c;who&#xff0c;when, where, how&#xff0c;以及why等相关问题。从机器学习的概念&#xff0c;到机器学习的发展史&#xff0c;再到…

数据通路功能——单总线

一般数据流向有&#xff0c;寄存器与寄存器之间&#xff0c;寄存器有主存之间&#xff0c;寄存器与ALU等三个方向&#xff0c;暂存寄存器比如下图的Y&#xff0c;Z和ALU之间会有专门的数据通路,他们之间的数据通路不会占用数据总线 如果用单总线alu需要配合暂存寄存器&#xf…

数据通路——专用数据通路

里面c1和c2一直到c9里面都是控制信号

设有单总线结构计算机的cpu数据通路,中央处理器——数据通路之单总线结构

数据通路数据通路&#xff1a;数据在功能部件之间传送的路径。也就是信息从哪里开始中间经过哪些部件最后传到哪里&#xff0c;由控制部件产生的控制信号建立数据通路数据通路的基本结构可分为三类&#xff1a;CPU内部单总线方式。CPU内部多总线方式。专用数据通路方式。CPU内部…

【王道计算机组成原理Note】5.3 CPU数据通路(CPU内部总线+专用数据通路)

5.3.1 数据通路-CPU内部单总线方式 这是第一节的图&#xff0c;将其部件换到一边&#xff1a; 5.3.1.1 CPU内部单总线方式 内部总线是指同一部件&#xff0c;如CPU内部连接各寄存器及运算部件之间的总线; 系统总线是指同一台计算机系统的各部件&#xff0c;如CPU、内存、通道…

(计算机组成原理)第五章中央处理器-第三节2:CPU专用数据通路

专栏目录首页:【专栏必读】王道考研408计算机组成原理万字笔记、题目题型总结、注意事项、目录导航和思维导图文章目录 一:概述二:例题一:概述 如果数据通路采用CPU内部单总线,那么就意味着同一时间只允许两个部件进行数据交互。实际上,如果能使多个部件同时进行数据交互…

【计算机组成原理】中央处理器(三)—— 数据通路

【计算机组成原理】中央处理器&#xff08;三&#xff09;—— 数据通路一、数据通路概念二、CPU内部单总线方式例题三、专用数据通路专用数据通路方式-例题一、数据通路概念 数据通路&#xff1a;数据在功能部件之间传送的路径。&#xff08;信息从哪里开始中间经过哪些部件最…