• 581. Shortest Unsorted Continuous Subarray


    一、题目

      1、审题 

      

      2、分析

        给定一个无序整形数组,将其变为有序,最少要将连续的多少个元素进行排序。

    二、解答

      1、思路

        ① 采用两个指针。 begin 记录需要排序的元素的最低下标; end 记录需要排序的元素的最高下标。

        ② 顺序遍历数组, 采用变量 max,记录到当前元素为止的最大元素值,若当前元素值 < max ,即此元素需要进行重新排序。采用 end 记录。

        ③ 逆序遍历数组,采用变量 min,记录到当前元素为止的最小元素值,若当前元素值 > min,即词元素值也需要重新怕徐。采用 begin 记录。

        ④ 最终需要排序的元素下标序列为 begin ~ end 。 总元素个数为 end - begin +1;

        public int findUnsortedSubarray(int[] nums) {
            int n = nums.length;
            int begin = -1, end = -2;    // 若数组已经有序,则最终的结果 end - begin + 1 == 0
            int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
            // begin 比 min 大, end 比 max 小
            // 找到最后的一个元素, 这个元素从左看比最大的石头小(end 后面的都比最大的数值大)
            for (int i = 0; i < n; i++) {
                max = Math.max(max, nums[i]);
                if(nums[i] < max)
                    end = i;
            }
            
            // 找到最前面的一个元素,这个元素从右看比最小的石头大。(begin 前面的都比最下的数值小)
            for (int i = n - 1; i >= 0; i--) {
                min = Math.min(min, nums[i]);
                if(nums[i] > min)
                    begin = i;
            }
            return end - begin + 1;
        }
  • 相关阅读:
    LOTUS还能活多久
    关于Domino的DIIOP服务 (转)
    Domino Servlet示例
    Limits on numeric data representation in LotusScript
    用webdav实现从DominoOA到Exchange的日程同步.
    Limits on array variables in LotusScript
    Table of Notes and Domino known limits
    IBM / Lotus Domino 与 WebSphere Portal: 单点登录(转)
    某个domino的word公文本地编辑实现方案
    Domino中部署Servlet
  • 原文地址:https://www.cnblogs.com/skillking/p/10935940.html
Copyright © 2020-2023  润新知