博客
关于我
LeetCode.581 Shortest Unsorted Continuous Subarray
阅读量:806 次
发布时间:2019-03-17

本文共 2372 字,大约阅读时间需要 7 分钟。

To solve this problem, we need to find the shortest continuous subarray such that sorting this subarray in ascending order would make the entire array sorted in ascending order as well.

Approach

The approach to solve this problem involves the following steps:

  • Sort the Array: First, we create a sorted version of the input array. This helps us identify the segments of the array that are out of order.

  • Identify Differences: We compare the original array with the sorted array to find the indices where they first differ (start of the unsorted segment) and where they last differ (end of the unsorted segment).

  • Determine the Subarray Length: The length of the shortest subarray that needs to be sorted is given by the range from the first differing index to the last differing index, inclusive.

  • Solution Code

    public class Solution {    public int findMinimumSubarrayLength(int[] nums) {        int n = nums.length;        int[] sorted = Arrays.copyOf(nums, n);        Arrays.sort(sorted);                int start = 0;        while (start < n && sorted[start] == nums[start]) {            start++;        }                if (start >= n) {            return 0;        }                int end = n - 1;        while (end >= 0 && sorted[end] == nums[end]) {            end--;        }                return end - start + 1;    }}

    Explanation

  • Sorting the Array: We create a sorted version of the input array to compare against the original array and identify the unsorted segments.

  • Finding the Start of the Subarray: By iterating through the original array, we find the first index where the value does not match the corresponding value in the sorted array. This index marks the beginning of the segment that needs to be sorted.

  • Finding the End of the Subarray: Similarly, by iterating from the end of the array, we find the last index where the value does not match the corresponding value in the sorted array. This index marks the end of the segment that needs to be sorted.

  • Calculating the Length: The length of the subarray is calculated as the difference between the end and start indices, plus one.

  • This approach ensures that we efficiently find the shortest subarray that, when sorted, will result in the entire array being sorted. The time complexity is dominated by the sorting step, making it (O(n \log n)), which is efficient for large arrays up to 10,000 elements.

    转载地址:http://ekjez.baihongyu.com/

    你可能感兴趣的文章
    Mysql实战之数据备份
    查看>>
    MySQL实战教程:从小白到大神的进阶之路!
    查看>>
    mysql实现成绩排名
    查看>>
    Mysql客户端中文乱码问题解决
    查看>>
    mysql客户端工具使用
    查看>>
    MySQL密码忘记,怎么办?
    查看>>
    mysql对同一张表进行查询和赋值更新
    查看>>
    mysql导入数据库出现:Incorrect string value: '\xE7\x82\xB9\xE9\x92\x9F' for column 'chinese' at row 1...
    查看>>
    mysql导入(ibd文件)
    查看>>
    Mysql工作笔记006---Mysql服务器磁盘爆满了_java.sql.SQLException: Error writing file ‘tmp/MYfXO41p‘
    查看>>
    MySQL工具1:mysqladmin
    查看>>
    mysql常用命令
    查看>>
    MySQL常用命令
    查看>>
    mysql常用命令
    查看>>
    MySQL常用指令集
    查看>>
    mysql常用操作
    查看>>
    MySQL常用日期格式转换函数、字符串函数、聚合函数详
    查看>>
    MySQL常见架构的应用
    查看>>
    MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)
    查看>>
    MySQL常见约束条件
    查看>>