581. 最短無序連續子數組

  • 題目詳述

581. 最短無序連續子數組

給定一個整數數組,你需要尋找一個連續的子數組,如果對這個子數組進行升序排序,那麼整個數組都會變爲升序排序。

你找到的子數組應是最短的,請輸出它的長度。

示例 1:

輸入: [2, 6, 4, 8, 10, 9, 15]

輸出: 5

解釋: 你只需要對 [6, 4, 8, 10, 9] 進行升序排序,那麼整個表都會變爲升序排序。

說明 :

  1. 輸入的數組長度範圍在 [1, 10,000]。
  2. 輸入的數組可能包含重複元素 ,所以升序的意思是<=。

 

二.自我探尋
思路:排序好該數組,從前往後,從後往前對比哪裏不一樣

代碼:public static int findUnsortedSubarray(int[] nums) {

       int[] b=nums.clone();

        Arrays.sort(b);

        int i=0;

        for(;i<b.length;i++)

        {

          if(nums[i]!=b[i])

             break;

        }

        int j=b.length-1;

        for(;j>=0;j--)

        {

          if(nums[j]!=b[j])

             break;

        }

        return j-i+1;

}

評價:

 

  • 網絡學習過程

代碼:public static int findUnsortedSubarray(int[] nums) {

       int max=nums[0];

       int min=nums[nums.length-1];

       int end=-2;

       int start=-1;

       for(int i=0;i<nums.length;i++)

       {

          if(max>nums[i])

          {

             end=i;

          }

          else {

             max=nums[i];

          }

       }

       for(int j=nums.length-1;j>=0;j--)

       {

          if(min<nums[j])

          {

             start=j;

          }

          else {

             min=nums[j];

          }

       }

       return end-start+1;

}

評價:

 

 

四.Python實現

 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章