[LeetCode]581. Shortest Unsorted Continuous Subarray

来源:互联网 发布:什么软件上youtube 编辑:程序博客网 时间:2024/05/15 16:17

https://leetcode.com/problems/shortest-unsorted-continuous-subarray/#/description

找到最短连续子数组,将这个子数组排序之后整个数组就有序了。求最短子数组长度



从左往右遍历的话,如果有序的话当前位置一定是已经遍历到的最大值位置;从右往左遍历的话,当前位置一定是已经遍历到的最小值位置。如果不是就要记录下beg和end。


另外初始赋值beg和end也很巧妙,保证如果完全有序的话返回0。如果不是完全有序的话必定beg和end都会被更新。

public class Solution {    public int findUnsortedSubarray(int[] nums) {        int len = nums.length;        int max = nums[0];        int min = nums[len - 1];        int beg = -1;        int end = -2;        for (int i = 1; i < len; i++) {            max = Math.max(max, nums[i]);            min = Math.min(min, nums[len - i - 1]);            if (max > nums[i]) {                end = i;            }            if (min < nums[len - i - 1]) {                beg = len - i - 1;            }        }        return end - beg + 1;    }}




阅读全文
0 0
原创粉丝点击