初学python记录:力扣2009. 使数组连续的最少操作数

news2024/10/6 2:26:20

题目:

给你一个整数数组 nums 。每一次操作中,你可以将 nums 中 任意 一个元素替换成 任意 整数。

如果 nums 满足以下条件,那么它是 连续的 :

  • nums 中所有元素都是 互不相同 的。
  • nums 中 最大 元素与 最小 元素的差等于 nums.length - 1 。

比方说,nums = [4, 2, 5, 3] 是 连续的 ,但是 nums = [1, 2, 3, 5, 6] 不是连续的 。

请你返回使 nums 连续 的 最少 操作次数。

思考:

  • “每次操作是改变nums中的一个元素的值” ----> 数组的长度n不会变
  • “要使最终数组变成连续的(元素互不相同且数值连续)” ----> 假设最终的连续数组从left开始,到right为止,那么1.所有数值在[left, right]以外的元素x都需要改变,2.所有数值在[left, right]以内的重复的元素y都需要改变 ----> 所有元素x和y的数量之和res即为答案
  • 要使和res最小,就要使[left, right]包含的不重复的元素尽可能多 ----> 先对数组进行去重和排序操作,然后从小到大遍历数组中的元素作为left,则right=left+n-1,计算包含的元素数量,取最大值,然后得到答案res

代码如下:

class Solution(object):
    def minOperations(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n = len(nums)
        sorted_nums = sorted(set(nums))  # 去掉nums中的重复元素,并排序
        n_ = len(sorted_nums)
        count = 1
        for i in range(0, n_):
            # 从小到大遍历数组中的元素作为left
            left = sorted_nums[i]
            right = left + n - 1
            count_ = 1     # 不用操作的元素数量,要尽可能大
            for j in range(i+1, n_):
                if sorted_nums[j] > right:
                    break
                else:
                    count_ += 1
            count = max(count_, count)
            if count == n:
                return 0
        return n - count
                

超时,卡在 55 / 62 个例子。

优化代码:

由于从小往大取左边界,所以包含在右边界内的最大元素(的下标)也一定逐渐增大,要找到count=j-i+1的最大值。那么将范围[left,right]看成一个滑动窗口,窗口大小不变,找到每次窗口变化后count的最大值即可,代码如下:

class Solution(object):
    def minOperations(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n = len(nums)
        sorted_nums = sorted(set(nums))  # 去掉nums中的重复元素,并排序
        n_ = len(sorted_nums)
        count = 0
        j = 0
        for i in range(0, n_):
            # 从小到大遍历数组中的元素作为left
            left = sorted_nums[i]
            right = left + n - 1
            while j < n_ and sorted_nums[j] <= right:
                count = max(count, j - i + 1)
                j += 1
        return n - count

提交通过:

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

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

相关文章

java 开发环境配置 JAVA_HOME 和 MAVEN_HOME

java 开发环境配置 JAVA_HOME 和 MAVEN_HOME 介绍JAVA_HOMEMAVEN_HOME 配置环境1. 创建Java Home2. 创建Maven Home3. 设置环境变量4. 验证安装 没有 Maven 看这里 介绍 在Java和Maven的开发环境中&#xff0c;JAVA_HOME和MAVEN_HOME是非常重要的环境变量&#xff0c;它们帮助…

iOS 开发中上传 IPA 文件的方法(无需 Mac 电脑

引言 在 iOS 开发中&#xff0c;将 IPA 文件上传到苹果开发者中心是一个重要的步骤。通常情况下&#xff0c;我们需要使用 Mac 电脑上的 Xcode 或 Application Loader 工具来完成这个任务。然而&#xff0c;如果你没有 Mac 电脑&#xff0c;也没有关系&#xff0c;本文将介绍一…

JAVA毕业设计135—基于Java+Springboot+Vue的服装商城(源代码+数据库+万字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的服装商城(源代码数据库万字论文)135 一、系统介绍 本项目前后端分离&#xff0c;分为管理员、用户两种角色 1、用户&#xff1a; 注册、登录、服装购买、…

Centos7搭建 SkyWalking 单机版

介绍 Skywalking是应用性能监控平台&#xff0c;可用于分布式系统&#xff0c;支持微服务、云原生、Docker、Kubernetes 等多种架构场景。 整体架构如图 Agent &#xff1a;在应用中&#xff0c;收集 Trace、Log、Metrics 等监控数据&#xff0c;使用 RPC、RESTful API、Kafk…

解决PyCharm更新到2024.1版本后不能运行项目的问题

先来看看这个问题的表现吧。 1、运行和调试按钮是灰色的&#xff0c;并且显示编辑器中的文件不可运行&#xff0c;代码也是灰色的&#xff0c;还有我们的python文件的图标和文本文件的图标一样。 当然右键也是没有运行、调试选项。 2、无法创建新的项目和py文件&#xff0c;能…

Teachable Machine模型之TensorFlow使用篇

前言: 使用在teachable machine训练的h5格式模型 tensorflow使用篇 1. 使用teachable machine训练模型 地址: 传送门, 需要梯子翻一下 训练后, 导出的时候可以选择三种类型 导出模型文件 converted_keras.zip (py版) 解压后得到 2. py项目中使用模型 根据你当时使用tea…

简介:基于Web的产品3D

基于 Web 的产品 3D 通过可视化界面获得各种选项来个性化他们的产品&#xff0c;例如颜色、材料、尺寸、文字、徽标、零件等。 在过去几年中&#xff0c;随着 3D 建模和渲染软件的出现&#xff0c;3D 渲染现在更常用于营销和促销目的。设计师、制造商和营销人员使用 3D 产品渲…

20240408通过win32diskimager给TF卡写入Ubuntu Core 16.04

20240408通过win32diskimager给TF卡写入Ubuntu Core 16.04 2024/4/8 20:48 IMG固件使用&#xff1a;h3-eflasher-friendlycore-xenial-4.14-armhf-20210618.img 固件不能放倒中文目录里/只能放到英文目录内&#xff01; 【也不能放到网络磁盘里】映射网络驱动器&#xff01; Wi…

大模型日报|今日必读的7篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.CT-LLM&#xff1a;仅 20 亿参数&#xff0c;基于中文的大型语言模型 来自开源研究社区 Multimodal Art Projection、复旦大学和香港科技大学的研究团队及其合作者&#xff0c;推出了一个 20 亿参数的大型语言模型…

c++配置libtorch

这里写目录标题 LibTorch下载Vistual Studio环境配置C部署Libtorch出现问题、错误汇总检测环境是否配置成功 LibTorch下载 安装LibTorch非常简单&#xff0c;只需要从其官网选择相应的版本即可&#xff0c;具体页面如下图所示。 如果需要加载PyTorch训练的模型文件&#xff0…

Centos中一些有趣的命令

目录 1.sl 小火车 2. cowsay 会说话的牛 3.toilet/figlet 图形化输出 4.aafire 小火焰 5.linux_logo 显示系统logo 1.sl 小火车 yum install sl 2. cowsay 会说话的牛 yum install cowsay 3.toilet/figlet 图形化输出 yum install toilet yum install figlet 4.aafire 小火…

电子电路中,MOS管的开启电压取多少最为合适呢?

电路中&#xff0c;MOS管的开启电压取多少最为合适呢&#xff1f; 比如&#xff1a; 某Nmos VGS范围为正负20V 栅极阈值电压&#xff08;VGSth&#xff09;最小为0.8V&#xff0c;最大为1.5V 那么此时的Mos管栅极电压取多少最为合适&#xff1f; 在电路中&#xff0c;MOS管的开…

通过Golang获取公网IP地址

在Go语言中&#xff0c;获取当前的外网&#xff08;公网&#xff09;IP地址可以通过多种方法实现。其中一种常见的方法是通过访问外部服务来获取。这些服务可以返回访问者的公网IP地址&#xff0c;例如 httpbin.org/ip 或 ipify.org。下面是一个简单的例子&#xff0c;展示了如…

汇编语言程序设计实验五 条件转移指令

实验目的和要求 (1) 编写实验任务要求的两个程序。 (2) 写出调试以上程序&#xff0c;即修改程序参数&#xff0c;检查结果的操作方法。 (3) 熟悉源程序汇编、连接命令的使用方法即要回答的内容。 实验环境 DOSBOX 实验内容与过程 验证以下程序 16进制数…

JS 轮播图点击左右切换

点击左右按钮实现轮播图切换图片 style&#xff1a; *{margin: 0;padding: 0;margin: auto;}#img1{width: 300px;height: 300px;position: relative;}#butto1{width: 50px;height: 100px;font-size: 50px;border: none;background-color: hsla(0, 0%, 0%, 0.2);position: abs…

CS162 Operating System笔记

What is an Operating System? it’s typically a special layer of software that provides the application access to hardware resources.So.it’s convenient abs fractions of complex hardware devices.

DVWA-xss储存型及beef下载(kali)

beef下载 apt-get update apt-get install beef-xss 登录网址是 这里的ip为虚拟机的地址 之后会让你设置密码 如果密码和用户不知道在etc/beef-xss/config.yaml可以查看 这是偷cookie的就是代码 这里是可以修改的不修改的话代码是不全的 通过beef拿到了cookies之后在网页…

知名度最高的3款电脑监控软件

知名度最高的3款电脑监控软件 公司电脑监控软件是一种安装在员工电脑上的软件&#xff0c;主要用于监控和管理员工的电脑屏幕操作、网络行为以及文件操作等。这种软件有助于企业提高员工的工作效率&#xff0c;保护公司的数据安全&#xff0c;并维护公司的IT健康环境。 市面有…

Seatunnel和web快速安装详解

目录 版本声明下载地址seatunnel下载seatunnel-web下载 安装seatunnel上传压缩包解压配置环境变量下载JAR包测试功能启动服务 安装seatunnel-web解压安装包初始化数据库修改数据连接配置文件配置Client信息配置支持的插件信息配置JAR包配置数据源JAR包配置datasource开头的jar包…

Leetcode 第 390 场周赛题解

Leetcode 第 390 场周赛题解 Leetcode 第 390 场周赛题解题目1&#xff1a;3090. 每个字符最多出现两次的最长子字符串思路代码复杂度分析 题目2&#xff1a;3091. 执行操作使数据元素之和大于等于 K思路代码复杂度分析 题目3&#xff1a;3092. 最高频率的 ID思路代码复杂度分析…