Python 中最短的未排序连续子数组
pythonserver side programmingprogramming更新于 2025/10/25 8:12:17
假设我们有一个整数数组,我们需要找到一个连续子数组,这样,如果我们 只按升序对该子数组进行排序,那么整个数组也会排序。我们需要 找到最短的此类子数组并输出其长度。因此,如果数组为 [2,6,4,8,10,9,15],则 输出将为 5。数组将为 [6,4,8,10,9]
为了解决这个问题,我们将遵循以下步骤 −
res := 将 nums 排序为数组
ans := 0
将 r 设置为链接列表
对于 i,范围为 0 到 res 的长度
如果 nums[i] 与 res[i] 不同,则将 i 插入 r
如果 r 的长度为 0,则返回 0,如果 r 的长度为 1,则返回1
返回 r 的最后一个元素 – r 的第一个元素 + 1
示例 (Python)
让我们看下面的实现,以便更好地理解 −
class Solution(object): def findUnsortedSubarray(self, nums): res = sorted(nums) ans = 0 r = [] for i in range(len(res)): if nums[i] != res[i]: r.append(i) if not len(r): return 0 if len(r) == 1: return 1 return r[-1]-r[0]+1 ob1 = Solution() print(ob1.findUnsortedSubarray([2,6,4,8,10,9,15]))
输入
[2,6,4,8,10,9,15]
输出
5
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

