2024-07-27:用go语言,给定一个正整数数组,最开始可以对数组中的元素进行增加操作,每个元素最多加1。 然后从修改后的数组中选出一个或多个元素,使得这些元素排序后是连续的。 要求找出最多可以选

news/2024/9/8 12:43:33/文章来源:https://www.cnblogs.com/moonfdd/p/18327589

2024-07-27:用go语言,给定一个正整数数组,最开始可以对数组中的元素进行增加操作,每个元素最多加1。

然后从修改后的数组中选出一个或多个元素,使得这些元素排序后是连续的。

要求找出最多可以选出的元素数量。

输入:nums = [2,1,5,1,1]。

输出:3。

解释:我们将下标 0 和 3 处的元素增加 1 ,得到结果数组 nums = [3,1,5,2,1] 。

我们选择元素 [3,1,5,2,1] 并将它们排序得到 [1,2,3] ,是连续元素。

最多可以得到 3 个连续元素。

答案2024-07-27:

chatgpt

题目来自leetcode3041。

大体步骤如下:

1.定义一个函数 maxSelectedElements(nums),参数为一个整数数组 nums,返回最多可选出的连续元素数量。

2.初始化一个空的映射 f 用于存储每个数字及其相邻数字出现的次数。

3.对输入的数组 nums 进行排序,确保数组中的元素是升序排列。

4.遍历排序后的数组 nums,对于数组中的每个元素 x:

  • 更新映射 f[x+1] 为 f[x] + 1,表示 x+1 与 x 相邻的数字出现的次数。

  • 更新映射 f[x] 为 f[x-1] + 1,表示 x 与 x-1 相邻的数字出现的次数。

5.遍历映射 f 中的所有值,取其中的最大值作为答案。

总的时间复杂度为 O(nlogn) 其中 n 是输入数组的长度,主要由排序算法造成。

总的额外空间复杂度为 O(n),用来存储映射 f。

Go完整代码如下:

package mainimport ("fmt""slices"
)func maxSelectedElements(nums []int) (ans int) {slices.Sort(nums)f := map[int]int{}for _, x := range nums {f[x+1] = f[x] + 1f[x] = f[x-1] + 1}for _, res := range f {ans = max(ans, res)}return
}func main() {nums:=[]int{2,1,5,1,1}fmt.Println(maxSelectedElements(nums))
}

在这里插入图片描述

Python完整代码如下:

# -*-coding:utf-8-*-def maxSelectedElements(nums):nums.sort()f = {}ans = 0for x in nums:f[x+1] = f.get(x, 0) + 1f[x] = f.get(x-1, 0) + 1for res in f.values():ans = max(ans, res)return ansnums = [2, 1, 5, 1, 1]
print(maxSelectedElements(nums))

在这里插入图片描述

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

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

相关文章

雷达气象学(4)——雷达参数和雷达气象方程

目录4.1 与脉冲相关的参数4.1.1 电磁波的波长4.1.2 脉冲重复频率(PRF)和脉冲重复周期(PRT)4.1.3 脉冲宽度和脉冲长度4.1.4 脉冲发射功率4.2 与天线相关的参数4.2.1 天线方向图和波束宽度4.2.2 天线增益4.3 雷达气象方程4.3.1 单个目标的雷达气象方程4.3.2 粒子群的雷达气象…

JavaWeb开发基础Servlet API

Servlet版本 Oracle将Java EE(Java SE还自己保留)交给开源组织,Eclipse基金会接手。但Oracle不允许开源组织使用Java名号,所以Jakarta EE名称于2018.02.26应运而生。 正是因为组织变化,Servlet被割裂为了2个版本,javax.servlet和jakarta.servlet。 javax.servlet已经停止…

利用Elasticsearch实现地理位置、城市搜索服务

最近用到一些简单的地理位置查询接口,基于当前定位获取用户所在位置信息(省市区),然后基于该信息查询当前区域的......提供服务。 然后就自己研究了下GIS,作为一个程序员。自己能不能实现这个功能呢?答案当然是可以。立即开干。 思路:找到数据,写入数据库,利用Elastic…

因子分析法————数据降维

因子分析法通过研究变量间的相关系数矩阵,把这些变量间错综复杂的关系归结成少数几个综合因子,起到了很好的降维作用 目录一、因子分析与主成分分析的对比1.原理对比2.作用区别二、因子分析的实例三、因子分析的理论介绍1.因子分析的模型2.模型假设3.因子载荷矩阵的统计意义(…

Python 实现行为驱动开发 (BDD) 自动化测试详解

​在当今的软件开发领域,行为驱动开发(Behavior Driven Development,BDD)作为一种新兴的测试方法,逐渐受到越来越多开发者的关注和青睐。Python作为一门功能强大且易于使用的编程语言,在实现BDD方面也有着独特的优势。那么,如何利用Python实现BDD自动化测试呢?本文将为…

Fenwick Tree

看这篇题解 解释一下是为什么 看蓝书的图,比如\(a_3\)对\(c_8\)的贡献,操作一次,贡献系数为\(1\),然后将\(a_8\)中\(a_3\)的贡献次数改为\(1\),考虑一下操作第二次在干什么,我们是先更新了\(a_3\)对\(c_4\)的贡献,然后让\(c_8\)为\(c_4\)和\(a_8\)(注意这里的\(a_8\)已…

04HTML+CSS

今天开始学了CSS,CSS叫做-层叠样式表。主要是来美化界面的。今日学习内容有 1.CSS的引入方式,CSS的引入方式有三种 内部样式表:学习使用 CSS 代码写在 style 标签里面 l 外部样式表:开发使用 l CSS 代码写在单独的 CSS 文件中(.css)在 HTML 使用 link 标签引入 ,在.CSS文…

ssy中学暑假集训向量学习笔记(完结)

今天模拟赛T4是个极其恶心的东西,用到了许多高中数学知识,md,先引入前置知识。 复数 定义虚数单位\(i\) 满足\(i^2=-1\),复数域\(C\),形如\(a+bi,(a,b\in \mathbb{R})\)的数叫做复数。 复数\(a+bi\)可以在坐标系中表示为\((a,b)\)的向量。 同时复数的加减法满足向量的加减法…

ssy中学暑假集训向量学习笔记(应该能完结)

今天模拟赛T4是个极其恶心的东西,用到了许多高中数学知识,md,引入前置知识。 向量 定义 顾名思义,向量就是有方向的量,在平面直角坐标系上可以用\((a,b)\)表示,图如下:图像上即为由\(A\)指向\(B\)的一条向量。 投影 投影不好解释,拿图吧。\(AC\)在\(AB\)上的投影就是\(…

2023.7.2-3-4Mssql xp_cmdshell提权

1.概念 Mssql和SQL sever的一个产品的不同名称。都属于微软公司旗下。而上述Mssql xp_cmdshell提权也属于数据库提权的一种。 主要依赖于sql server自带的存储过程。 1.1xp_cmdshell提权 扩展存储过程中xp_cmdshell是一个开放接口,可以让sql sever调用cmd命令。 此过程在 SQL …

第二次测试部分题解 (c,d,g)

c-一个欧拉函数模板题1 #include<iostream>2 using namespace std;3 4 int main()5 {6 int n;7 cin >> n;8 int r = n;9 for (int i = 2; i * i <= n; i++) 10 { 11 if (n % i == 0) 12 { 13 r = r / i * (i -…

[随笔]我的创作纪念日

今天,是我开始创作的第256天,哈哈...这刚好是8位无符号二进制的“模”,一个“轮回”。 一些心得和感悟、一些历程与经历、一些收获与体会,大家感兴趣可以看看。历程 我最开始接触这个平台大约是在2020年10月份的时候,那时我正直大三上期,我已经开始备研。附言:黎老师(我…