​力扣解法汇总1590. 使数组和能被 P 整除

news2024/12/25 12:41:34

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你一个正整数数组 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 <= 105
  • 1 <= nums[i] <= 109
  • 1 <= p <= 109

解题思路:

* 解题思路:
* 我的解法还是比较差的一种,时间复杂度达到了O(n2)。
* 首先求出diff值,为总和和p的余数,
* 然后使用前缀和,分别求长度为1,2,3,4的子数组,
* 求子数组的值,看是否有满足diff == (i1 % p)的

代码:

public class Solution1590 {

    public int minSubarray(int[] nums, int p) {
        int length = nums.length;
        long[] prifixSum = new long[length + 1];
        prifixSum[0] = 0;
        for (int i = 0; i < nums.length; i++) {
            int value = nums[i];
            prifixSum[i + 1] = prifixSum[i] + value;
        }
        if (p > prifixSum[length]) {
            return -1;
        }
        if (prifixSum[length] % p == 0) {
            return 0;
        }
        long diff = prifixSum[length] % p;

        for (int i = 1; i < length; i++) {
            for (int index = i; index <= length; index++) {
                long i1 = prifixSum[index] - prifixSum[index - i];
                if (diff == (i1 % p)) {
                    return i;
                }
            }
        }
        return -1;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下创建ln链接文件

1.linux重定向命令 >ls > a.txt将ls显示的结果 输出到文件中1.echo "hello world"2.往终端上输出 字符串"hello world"echo "hello " >c.txt 将"hello "字符串 输出到文件中&#xff08;覆盖&#xff09;echo "world&qu…

MFC 简单使用事件

功能三个按钮,一个静态框,默认值是0,增加减少按钮和退出按钮.增加减少按钮显示在静态框中.退出按钮退出软件.实验事件思路新建三个事件,add事件sub事件quit事件,一个按钮触发一个事件,静态框新建一个线程接受事件做出对应的改变.UI添加的代码就不具体说,具体说下事件的代码,这才…

SpringBoot项目使用Schedule注释创建定时任务

文章目录知识讲解相关注释&#xff08;主要两个,EnableScheduling和Scheduled&#xff09;scheduled的cron语法代码项目目录结构启动类&#xff08;Application&#xff09;定时任务类(Task)配置类&#xff08;application.properties&#xff09;pom依赖展望&#xff08;Quart…

环形链表相关的练习

目录 一、相交链表 二、环形链表 三、环形链表 || 一、相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据…

基于Three.js和MindAR实现的网页端WebAR人脸识别追踪功能的京剧换脸Demo(含源码)

前言 近段时间一直在玩MindAR的功能&#xff0c;之前一直在弄图片识别追踪的功能&#xff0c;发现其强大的功能还有脸部识别和追踪的功能&#xff0c;就基于其面部网格的例子修改了一个国粹京剧的换脸程序。如果你不了解MindAR的环境配置可以先参考这篇文章&#xff1a;基于Mi…

本地存储localStorage、sessionStorage

目录 一、localStorage 二、sessionStorage 三、本地存储处理复杂数据 一、localStorage 介绍 &#xff08;1&#xff09;数据存储在用户浏览器中 &#xff08;2&#xff09;设置、读取方便、甚至页面刷新不会丢失数据 &#xff08;3&#xff09;容量较大&#xff0c;se…

408考研计算机之计算机组成与设计——知识点及其做题经验篇目3:指令的寻址方式

上篇文章我们讲到&#xff0c;指令的基本格式&#xff0c;一条指令通常包括操作码字段和地址码字段两部分&#xff1a; 操作码字段地址码字段并且我们还讲到根据操作数地址码的数目不同&#xff0c;可将指令分为零一二三四地址指令。感兴趣的小伙伴们可以看看小编的上一篇文章…

贝塞尔曲线介绍及其应用

贝塞尔样条是一个允许用户控制节点处斜率的样条&#xff0c;是一种特殊的三次样条。   皮埃尔贝塞尔在其为雷诺&#xff08;Renault&#xff09;汽车公司工作时有了这个创意。Paul de Casteljau在与雷诺竞争关系的汽车公司雪铁龙Citroen公司工作时也独立有了这个想法。这在两…

联合解决方案 | 亚信科技AntDB数据库携手浪潮K1 Power赋能关键行业数字化转型,助力新基建

自2022年印发《“十四五”数字经济发展规划》以来&#xff0c;我国数字化发展进入快车道。数据库作为数据存储与计算的基础软件&#xff0c;对筑牢数字经济底座至关重要。服务器是承载数据的重要载体&#xff0c;在数据库性能可以通过扩容而无上限提升的情况下&#xff0c;数据…

老爸:“你做的什么游戏测试简直是不务正业!”——我上去就是一顿猛如虎的解释。

经常有人问我&#xff1a;游戏测试到底是干什么呢&#xff1f;是游戏代练&#xff1f;每天玩游戏&#xff1f;装备随便造&#xff0c;怪物随便秒&#xff0c;线上GM指令随便用&#xff1f;可以每天玩玩游戏&#xff0c;不用忙工作&#xff0c;太爽了&#xff1f;有时朋友不理解…

1638_chdir函数的功能

全部学习汇总&#xff1a;GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 今天看一个半生不熟的小函数&#xff0c;chdir。说半生不熟&#xff0c;是因为这个接口一看就知道是什么功能。然而&#xff0c;这个接口如何用可真就没啥想法了。 …

【微信小程序】-- 自定义组件 -- 数据、方法和属性(三十三)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

设计模式之门面模式(外观模式)

目录 1.模式定义 2.应用场景 2.1 电源总开关例子 2.2 股民炒股场景 ​编辑 3. 实例如下 4. 门面模式的优缺点 传送门&#xff1a; 项目中用到的责任链模式 给对象讲工厂模式&#xff0c;必须易懂易会 策略模式&#xff0c;工作中你用上了吗&#xff1f; 1.模式定…

Linux order(文件、磁盘、网络、系统管理、备份压缩)

1. Linux 文件命令 -rwxrwxrwx chmod&#xff1a;change mode&#xff0c;用于&#xff08;文件所有者或 root &#xff09;变更用户(u:owner g:group o:other a:all)的权限 chmod [OPTION]… MODE[,MODE]… FILE… OPTION -R&#xff1a;递归修改more option&#xff1a;chmod…

【WPS文字-Word】WPS文字设置段落居中对齐后公式左边右边的文字仍然无法跟公式对齐,公式和文字对不齐

一、问题背景 原来的公式左边文字是底端&#xff0c;右边文字是居中&#xff0c;我想着让左右文字全跟公式居中对齐&#xff0c;就全部设置了段落居中对齐。 结果发现&#xff0c;公式左右边的文字依然无法居中对齐。左边的文字是居中&#xff0c;但是右边的文字变成了顶端对…

数据推介⎮情感语音合成音库

在语音交互领域&#xff0c;语音合成是重要的一环&#xff0c;其技术也在不断发展。近年来&#xff0c;人们对情感合成的兴趣和需求越来越高。情感语音合成会让机器如真人一样和我们交流&#xff0c;它可以用愤怒的声音、开心的声音、悲伤的声音等不同情绪来表达&#xff0c;甚…

Atlassian Server用户新选择 | 云版和本地部署的数据中心版,总有一个适合您

Atlassian对Server版本产品的支持将于2024年2月15日结束&#xff0c;现在&#xff0c;是时候创建您的迁移计划了。一起来看看您需要了解什么基础知识以及如何规划下一步行动吧。 虽然离终止支持还有几个月的时间&#xff0c;但对于使用Server版的企业来说&#xff0c;这是一则…

数字孪生与 UWB 人员定位:双剑合璧的智能物联新时代

人员定位是指利用各种定位技术对人员在特定场所的位置进行准确定位的技术。人员定位技术主要应用于需要实时监控、管理和保障人员安全的场所&#xff0c;如大型厂区、仓库、医院、学校、商场等。人员定位技术的应用范围非常广泛&#xff0c;例如&#xff1a;-在工厂生产线上&am…

MySQL数据库迁移

考试系统的数据库一直是在我自己的服务器上面的&#xff0c; 但是最近&#xff0c;自己的服务器马上要过期了&#xff0c;里面的MySQL数据需要迁移出来&#xff0c;放在另外一个服务器上面。百度了几篇教程&#xff0c;也没研究太多&#xff0c;选了一种比较简单的方式进行迁移…

蓝桥杯三月刷题 第7天

文章目录&#x1f4a5;前言&#x1f609;解题报告&#x1f4a5;三角回文数&#x1f914;一、思路:&#x1f60e;二、代码&#xff1a;&#x1f4a5;数数&#x1f914;一、思路:&#x1f60e;二、代码&#xff1a;&#x1f4a5;数组切分&#x1f914;一、思路:&#x1f60e;二、…