news 2026/5/2 23:04:37

千问 LeetCode 2009.使数组连续的最少操作数 Python3实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
千问 LeetCode 2009.使数组连续的最少操作数 Python3实现

以下是 LeetCode 2009. 使数组连续的最少操作数 的 Python3 实现,采用 去重 + 排序 + 滑动窗口(双指针) 的高效方法:

✅ 解题思路回顾

目标:将数组变为一个长度为 n 的连续整数序列(如 [x, x+1, ..., x+n-1]),求最少修改次数。

关键观察:
- 最终序列有 n 个互不相同的连续整数。
- 我们希望保留尽可能多的原数组中的不同元素,且这些元素能落在某个长度为 n 的区间内。
- 因此:
最少操作数 = n - 最多可保留的不同元素个数

步骤:
1. 去重并排序(重复元素无法同时保留)。
2. 使用滑动窗口(双指针) 找出最长子数组,使得 arr[right] - arr[left] int:
n = len(nums)
# Step 1: 去重并排序
arr = sorted(set(nums))
m = len(arr)

max_keep = 1 # 至少可以保留一个数
left = 0

# Step 2: 双指针滑动窗口
for right in range(m):
# 缩小窗口直到 arr[right] - arr[left] = n:
left += 1
# 当前窗口 [left, right] 内的元素都可以保留
max_keep = max(max_keep, right - left + 1)

return n - max_keep

📊 复杂度分析

- 时间复杂度:
- 去重:O(n)
- 排序:O(m log m),其中 m ≤ n
- 双指针遍历:O(m)(每个元素最多进/出窗口一次)
→ 总体 O(n log n)

- 空间复杂度:O(n)(存储去重后的列表)

🧪 示例验证

示例 1:
nums = [4, 2, 5, 3]
去重排序后: [2,3,4,5]
窗口 [2,5]: 5-2=3 4 → 最大窗口长度=1 → 操作数=4-1=3

🔁 补充:二分查找版本(也可行)

如果你偏好二分,也可以对每个 left 用 bisect_right 找右边界:

import bisect

class Solution:
def minOperations(self, nums: List[int]) -> int:
n = len(nums)
arr = sorted(set(nums))
m = len(arr)
max_keep = 0

for i, val in enumerate(arr):
# 目标区间: [val, val + n - 1]
right_bound = val + n - 1
# 找第一个 > right_bound 的位置
j = bisect.bisect_right(arr, right_bound)
max_keep = max(max_keep, j - i)

return n - max_keep

但双指针版本更高效(O(m) vs O(m log m)),且代码简洁。

✅ 推荐使用双指针滑动窗口版本,清晰、高效、易理解。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 22:54:50

使用 Taotoken 后 API 调用延迟与稳定性的实际观测体验分享

使用 Taotoken 后 API 调用延迟与稳定性的实际观测体验分享 1. 观测背景与测试方法 作为长期使用大模型 API 的开发者,近期将多个项目的模型调用迁移到了 Taotoken 平台。迁移的主要动机是希望统一管理不同供应商的 API Key,并通过聚合端点简化调用流程…

作者头像 李华
网站建设 2026/5/2 22:53:45

QMCDecode:3步解锁QQ音乐加密音频的终极免费方案

QMCDecode:3步解锁QQ音乐加密音频的终极免费方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结…

作者头像 李华
网站建设 2026/5/2 22:50:25

3分钟掌握网页媒体下载:猫抓资源嗅探扩展实战指南

3分钟掌握网页媒体下载:猫抓资源嗅探扩展实战指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常遇到想保存网页视频却发现…

作者头像 李华