• 581. Shortest Unsorted Continuous Subarray


    题目链接

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

    题目大意

    给定一个整数数组,你需要找到一个连续的子阵,如果你只是这阵升序,然后整个阵列将以升序排序,也。
    你需要找到最短的子阵输出它的长度。

    样例1

    输入:[ 2, 6, 4,8, 10, 9,15 ]
    输出:5
    说明:您需要按升序排序[ 6, 4, 8,10, 9 ],使整个数组按升序排序。

    算法思想

    先用一个数组temp保存nums,然后对tmp排序,然后用两个变量low和high去找两个数组出现不同之处的第一个位置和最后一个位置,最后返回high-low+1就是要找的数组长度

    代码实现

    class Solution {
        public int findUnsortedSubarray(int[] nums) {
            int result = 0;
            int[] tmp = (int[])nums.clone();
            Arrays.sort(tmp);
            int start = -1;
            int end = -2;
            for (int i = 0;i<nums.length;i++){
                if (nums[i] != tmp[i]) {
                    if (start == -1) {
                        start=i;
                    }
                    end=i;
                }
            }
    
            return end-start+1;
        }
    }
    
    public class MainClass {
        public static int[] stringToIntegerArray(String input) {
            input = input.trim();
            input = input.substring(1, input.length() - 1);
            if (input.length() == 0) {
              return new int[0];
            }
        
            String[] parts = input.split(",");
            int[] output = new int[parts.length];
            for(int index = 0; index < parts.length; index++) {
                String part = parts[index].trim();
                output[index] = Integer.parseInt(part);
            }
            return output;
        }
        
        public static void main(String[] args) throws IOException {
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            String line;
            while ((line = in.readLine()) != null) {
                int[] nums = stringToIntegerArray(line);
                
                int ret = new Solution().findUnsortedSubarray(nums);
                
                String out = String.valueOf(ret);
                
                System.out.print(out);
            }
        }
    }
    

      

  • 相关阅读:
    史玉柱语录
    马云语录
    打开IE窗口自动最大化效果
    两个DIV平行存放
    学习ExtJS(一)
    30而立男人必须明白的事
    学习ExtJS(二) Button常用方法
    UltraWebGrid控件在开发ASP.NET项目中的使用方法和技巧(转)
    GridView模板列DropDownList当前行索引
    TreeView触发TreeNodeCheckChanged事件
  • 原文地址:https://www.cnblogs.com/airycode/p/7666365.html
Copyright © 2020-2023  润新知