Leetcode 2464. 有效分割中的最少子数组数目

news/2024/11/15 17:48:58/文章来源:https://www.cnblogs.com/geek0070/p/18425145

1.题目基本信息

1.1.题目描述

给定一个整数数组 nums。

如果要将整数数组 nums 拆分为 子数组 后是 有效的,则必须满足:

每个子数组的第一个和最后一个元素的最大公约数 大于 1,且
nums 的每个元素只属于一个子数组。
返回 nums 的 有效 子数组拆分中的 最少 子数组数目。如果不能进行有效的子数组拆分,则返回 -1。

注意:

两个数的 最大公约数 是能整除两个数的最大正整数。
子数组 是数组中连续的非空部分。

1.2.题目地址

https://leetcode.cn/problems/minimum-subarrays-in-a-valid-split/description/

2.解题方法

2.1.解题思路

动态规划

2.2.解题步骤

第一步,状态定义;dp[i]指nums中前i个元素的最小合法子数组数

第二步,状态初始化,前0个的最小组成数为0

第三步,状态转移;dp[i]=min(dp[i],dp[j-1]+1) (其中1<=j<=i并且nums[i-1]与nums[j-1]的最大公约数大于1),状态数组的最后一个值为inf,则返回-1,否则dp[-1]即为最终题解

3.解题代码

Python代码

class Solution:def validSubarraySplit(self, nums: List[int]) -> int:length=len(nums)# 第一步,状态定义;dp[i]指nums中前i个元素的最小合法子数组数dp=[inf]*(length+1)# 第二步,状态初始化,前0个的最小组成数为0dp[0]=0# 第三步,状态转移;dp[i]=min(dp[i],dp[j-1]+1) (其中1<=j<=i并且nums[i-1]与nums[j-1]的最大公约数大于1)for i in range(1,length+1):for j in range(1,i+1):if gcd(nums[i-1],nums[j-1])>1:dp[i]=min(dp[i],dp[j-1]+1)# print(dp)return dp[-1] if dp[-1]!=inf else -1

4.执行结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

debian 系统服务器搭建

在VMWare中安装Debian12.5虚拟机后, 需要开始进行一些设置:1. 先设置网络模式为桥接模式, 这样和主机在同一个局域网,方便后续ssh连接 2. 第1步设置后,重启Debian,登录后, 查看IP和Mac地址, 192.168.31.16,00:0c:29:6c:31:e6 3. 设置路由器,固定IP: 192.168.31.105。 …

初识算法

持续更新数据结构与算法专题,欢迎关注.......1.1 什么是算法? 定义 在数学和计算机科学领域,算法是一系列有限的严谨指令,通常用于解决一类特定问题或执行计算In mathematics and computer science, an algorithm (/ˈlɡərɪəm/) is a finite sequence of rigorous inst…

解锁Java线程池:实战技巧与陷阱规避

线程池作为初学者常感困惑的一个领域,本次“巧手打字通课堂”将深入剖析其中几个最为普遍的误区。专业在线打字练习网站-巧手打字通,只输出有价值的知识。一 前言 线程池作为初学者常感困惑的一个领域,本次“巧手打字通课堂”将深入剖析其中几个最为普遍的误区。为了更清晰地…

FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播

​之前的文章《利用RTMP协议构建电脑与手机的直播Demo》介绍了如何使用RTMP Streamer实现完整的RTMP直播流程,另一篇文章《利用SRT协议构建手机APP的直播Demo》介绍了如何使用SRT Streamer实现完整的SRT直播流程,接下来介绍如何使用EasyPusher-Android实现完整的RTSP直播流程…

小飞机配置

小飞机配置把两个文件的文件复制到小飞机的安装路径中小飞机路径:打开文件所在的位置将MSI Afterburner中的文件复制找到RTSS安装路径RTSS设置中文小飞机监控设置选择自己需要显示内容进行OSD显示

Spring原理基础

Spring 高级 1 容器与Bean 1.1 接口容器 1.1.1 BeanFactory是什么 @SpringBootApplication public class ShowApplication {public static void main(String[] args) {ConfigurableApplicationContext context = SpringApplication.run(ShowApplication.class, args);/*** 1、…

springboot+vite 商品管理

SpringBoot + Vue3 +MySql5.7 +JDK8 一、 SpringBoot项目搭建 1 SpringBoot概述 1.1 SpringBoot 概念 SpringBoot提供了一种快速使用Spring的方式,基于约定优于配置的思想,可以让开发人员不必在配置与逻 辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而…

SaaS业务架构:业务能力分析

大家好,我是汤师爷~ 今天聊聊SaaS业务架构的业务能力分析。 业务能力概述 简单来说,业务能力是企业“做某事的能力”。 业务能力描述了企业当前和未来应对挑战的能力,即企业能做什么或需要做什么。业务能力建模的关键在于定义了企业做什么,而不是如何做(由业务流程描述)。…

Redis常见使用场景

Redis常见使用场景

学习vue——ref和$refs

一、获取dom 二、获取子组件的方法