代码拉取完成,页面将自动刷新
https://leetcode-cn.com/problems/sub-sort-lcci/
给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。
示例:
输入: [1,2,4,7,10,11,7,12,6,7,16,18,19]
输出: [3,9]
提示:
0 <= len(array) <= 1000000
这道题让我排序子数组,使得整体数组是有序的。
那么我们其实可以:
同样地,我们还需要:
据此,我们可以写出代码(参见代码区)。
Python3 Code:
class Solution:
def subSort(self, A: List[int]) -> List[int]:
max_v, min_v = float('-inf'), float('inf')
right = left = -1
for i in range(len(A)):
if A[i] < max_v:
right = i
max_v = max(max_v, A[i])
for i in range(len(A) - 1, -1, -1):
if A[i] > min_v:
left = i
min_v = min(min_v, A[i])
return [-1,-1] if right - left == len(A) - 1 else [left, right]
复杂度分析
令 n 为数组长度。
此题解由 力扣刷题插件 自动生成。
力扣的小伙伴可以关注我,这样就会第一时间收到我的动态啦~
以上就是本文的全部内容了。大家对此有何看法,欢迎给我留言,我有时间都会一一查看回答。更多算法套路可以访问我的 LeetCode 题解仓库:https://github.com/azl397985856/leetcode 。 目前已经 40K star 啦。大家也可以关注我的公众号《力扣加加》带你啃下算法这块硬骨头。
关注公众号力扣加加,努力用清晰直白的语言还原解题思路,并且有大量图解,手把手教你识别套路,高效刷题。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。