2970. 统计移除递增子数组的数目 I

解题思路

本题中的子数组,称为递增子数组。
子数组指的是一个数组中一段连续的数组序列。
假设nums的长度为n,则nums的子数组的个数为 n × ( n + 1 ) 2 \frac{n\times(n+1)}{2} 2n×(n+1)
因此只需要找出不满足的递增子数组即可。

python

class Solution:def incremovableSubarrayCount(self, nums: List[int]) -> int:n = len(nums)res = 0for i in range(n):for j in range(i, n):num = nums[:i] + nums[j+1:]if self.isIncrement(num):res +=1return resdef isIncrement(self, nums):for i in range(1,len(nums)):if nums[i] <= nums[i-1]:return Falsereturn True

实际上就是假设找到了移除递增子数组,则子数组的左边严格递增,右边也是严格递增,同样nums[l] > nums[r+1]。可以进一步简写得到:

class Solution:def incremovableSubarrayCount(self, nums: List[int]) -> int:n = len(nums)return sum([self.isIncreasing(nums[:i] + nums[j+1:]) for i in range(n) for j in range(i, n)])def isIncreasing(self, nums):# 判断是否严格递增的if len(nums) == 0:return Truereturn all(nums[i] < nums[i+1] for i in range(len(nums) - 1))

C++

c++不像python一样可以对列表直接截取,因此判断时传入i,j进行判断即可。

class Solution {
public:int incremovableSubarrayCount(vector<int>& nums) {int n = nums.size();int res = 0;for (int i = 0; i < n; i++){for (int j = i; j < n; j++){if (isIncreasing(nums, i, j)){res ++;}}}return res;}bool isIncreasing(vector<int>& nums, int l, int r){for (int i = 1; i < nums.size(); i++){// 处于l,r区间内if (i >=l && i <= r+1) continue;if (nums[i] <= nums[i-1]) return false;}// 再判断一下左右两边是否满足递增if (l-1 >= 0 && r+1 < nums.size() && nums[r+1] <=nums[l-1]) return false;return true;}
};

java

class Solution {public int incremovableSubarrayCount(int[] nums) {int n = nums.length;int res = 0;for (int i = 0; i < n; i++) {for (int j = i; j < n; j++) {if (isIncreasing(nums, i, j)) {res++;}}}return res;}public boolean isIncreasing(int[] nums, int l, int r) {for (int i = 1; i < nums.length; i++) {if (i >= l && i <= r + 1) {continue;} if (nums[i] <= nums[i - 1]) {return false;}}if (l - 1 >= 0 && r + 1 < nums.length && nums[r + 1] <= nums[l - 1]) {return false;}return true;}
}

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

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

相关文章

C++基础编程100题-021 OpenJudge-1.4-01 判断数正负

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0104/01/ 描述 给定一个整数N&#xff0c;判断其正负。 输入 一个整数N(-109 < N < 109) 输出 如果N > 0, 输出positive; 如果N 0, 输出zero; 如果N < 0, 输出negative 样例输入 1样例输出…

MySQL 程序简介

以下是常用的 MySQL 程序 程序名作用 mysqldMySQL 的守护进程&#xff0c;即 MySQL 服务器&#xff0c;若要使用 mysql 服务&#xff0c;那么 mysqld 必须处在运行状态 mysqlMySQL 客户端程序&#xff0c;用户交互式输入 SQL 语句或以批处理模式从文件执行 SQL 的命令行…

【Neo4j】实战 (数据库技术丛书)学习笔记

Neo4j实战 (数据库技术丛书) 第1章演示了应用Neo4j作为图形数据库对改进性能和扩展性的可能性, 也讨论了对图形建模的数据如何正好适应于Neo4j数据模型,现在到了该动 手实践的时间了。第一章 概述 Neo4j将数据作为顶点和边存储(或者用Neo4j术语,节点和关系存 储)。用户被定…

原生android的内存性能提升方面的测试和优化方案大致设计

一 测试目标&#xff1a; 以满足用户设备的内存性能和不杀后台为目标。 1&#xff1a;满足用户设备的内存性能是指不出现因为内存原因导致的安卓设备死机&#xff0c;卡顿等问题。 2&#xff1a;满足不杀后台是指整个设备使用时&#xff0c;不出现后台app被杀。 通常是估算如果…

Pytorch版本、安装和检验

基于conda包的环境创建、激活、管理与删除 CUDA版本 CUDA 是 NVIDIA 专为图形处理单元 (GPU) 上的通用计算开发的并行计算平台和编程模型&#xff0c;CUDA版本需满足对应的Pytorch要求 进入NVIDIA控制面板 进入左下角“系统信息”&#xff0c;找到组件 “NVIDIA CUDA 12.3.10…

7. 有奖猜谜

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小明很喜欢猜谜语。 最近&#xff0c;他被邀请参加了 X 星球的猜谜活动。 每位选手开始的时候都被发给 777777 个电子币。 规则是&#xff1a;猜对了&#xff0c;手…

PostgreSQL关闭数据库服务的三种模式

PostgreSQL 提供了三种关闭数据库服务的不同方式&#xff0c;它们最终都是发送一个关闭信号到 postgres 主服务进程。 智能关闭模式 智能关闭&#xff08;Smart Shutdown&#xff09;模式向 postgres 主服务进程发送一个 SIGTERM 信号。此时服务器不允许新的客户端连接&#…

DNS 杂谈

一、定义 DNS&#xff08;Domain Name System&#xff09;&#xff0c;域名系统&#xff0c;该系统记录域名和Ip地址的相互映射关系。用户访问互联网时&#xff0c;通过域名地址得到对应的IP地址&#xff0c;这个过程称为域名解析。DNS运行于UDP协议之上&#xff0c;使用的端口…

手撸俄罗斯方块(一)——简单介绍

手撸俄罗斯方块 简单介绍 《俄罗斯方块》&#xff08;俄语&#xff1a;Тетрис&#xff0c;英语&#xff1a;Tetris&#xff09;&#xff0c;是1980年末期至1990年代初期风靡全世界的电脑游戏&#xff0c;是落下型益智游戏的始祖&#xff0c;电子游戏领域的代表作之一&a…

【代码随想录】【算法训练营】【第64天】 [卡码117]软件构建 [卡码47]参加科学大会

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 64&#xff0c;周三&#xff0c;继续ding~ 题目详情 [卡码117] 软件构建 题目描述 卡码117 软件构建 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言 [卡码…

算法的复杂度

文章目录 一、算法的效率1、复杂度的概念2、复杂度的重要性 二、时间复杂度三、空间复杂度四、大O的渐进表示发五、计算复杂度案例1、计算Func1函数的复杂度2、计算Fun2的时间复杂度3、计算Func3的时间复杂度4、计算Func4的时间复杂度5、计算strchr的时间复杂度6、计算Func5的时…

大模型/NLP/算法面试题总结5——Transformer和Rnn的区别

Transformer 和 RNN&#xff08;循环神经网络&#xff09;是两种常见的深度学习模型&#xff0c;广泛用于自然语言处理&#xff08;NLP&#xff09;任务。 它们在结构、训练方式以及处理数据的能力等方面有显著的区别。以下是它们的主要区别&#xff1a; 架构 RNN&#xff0…

MySQL空间索引

空间类型是建立在空间类型字段上的。 空间类型 MySQL的空间类型很多&#xff0c;我就不逐一介绍了。重要分四大类&#xff1a; GeometryCurveSurfaceGeometryCollection 前三种&#xff0c;地理、曲线、曲面都是不可实例化的。Geometry有一个子类Point, Curve有一个直接子类L…

docker无法拉取镜像,推荐可以使用下面镜像源

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF { "registry-mirrors": ["请替换为您自己的代理服务ip或者域名"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker 查看是否换源成功 docker info …

电脑误删除的文件怎么恢复免费 电脑误删文件导致无法开机怎么办

在使用电脑的时候&#xff0c;有时候可能会因为一些错误的操作&#xff0c;导致删除一些文件&#xff0c;如果是普通的文件&#xff0c;最坏的情况也就是文件找回来&#xff0c;如果删除的是系统文件&#xff0c;那么很有可能导致电脑开不了机。下面就给大家详细讲解&#xff0…

Spring Boot项目Jar包加密详解

目录 引言Jar包加密的基础知识 为什么需要加密Jar包Jar包加密的基本原理 常用的Jar包加密工具 ProGuardJavaguardJava Agent Spring Boot项目Jar包加密实战 使用ProGuard对Spring Boot项目进行加密集成Javaguard到Spring Boot项目中通过Java Agent实现动态加密 Jar包加密的安全…

什么牌子充电宝好用?推荐四款质量与性价比双优充电宝!

在如今高度数字化的生活中&#xff0c;充电宝已经成为我们日常生活中必不可少的电子设备。然而&#xff0c;随着市场上充电宝品牌的不断增多&#xff0c;人们对充电宝的质量和安全性也越来越关注。充电宝作为一个涉及电池和充电技术的产品&#xff0c;安全性至关重要。选择一款…

打造Perl编译器后端:自定义编程语言的终极指南

&#x1f6e0;️ 打造Perl编译器后端&#xff1a;自定义编程语言的终极指南 在编程语言的世界里&#xff0c;编译器后端是将中间代码转换成目标代码的桥梁。对于Perl这样一种强大的脚本语言&#xff0c;实现自定义的编译器后端不仅可以加深对其内部机制的理解&#xff0c;还可…

gosnmp库 - GetBulk() | Walk()

GetBulk() 方法 GetBulk()方法是对GetNext()方法的二度封装,GetNext()方法返回的是传入的oid的下一个对象,而GetBulk方法则是返回传入的oid的接下来的N个对象。 通过GetBulk传入的oid,SNMP代理会根据传入的参数去循环取值,构造PDU,但是,如果符合传入的oid的对象的数量超…

防火墙安全策略用户认证综合实验

生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网 办公区设备10.0.2.10不允许访问DMz区的FTP服务器和HTTP服务器&#xff0c;仅能ping通10.0.3.10 办公区分为市场部和研发部&#xff0c;研发部Ip地址固定&#xff0c;访问dmz区使用匿名认证&#xff0c;市场部需…