최단 정렬되지 않은 연속 부분 배열

정수 배열을 감안할 때, 당신은 당신 만 오름차순으로이 부분 배열을 정렬 할 경우, 다음 전체 배열이 너무, 오름차순으로 정렬됩니다 하나 개의 연속적인 부분 배열을 찾을 필요가있다.

당신은 짧은 같은 부분 배열 및 출력 길이를 찾아야합니다.

예 1 :

INPUT : [2 ,. 6 ,. 4 ,. 8, 10 ,. 9, 15] 
출력 :. 5 
설명 : [합니다. 6 4 ,. 8 ,., 10 ,. 9] 당신은 정렬 할 필요가 오름차순으로 전체 배열이 오름차순으로 정렬합니다. 

아이디어 :
먼저이 사건의 경우, 그것은 크게 중간을 증가되지 않으며, 최대 전류 값을 찾기보다 작은 여부를 확인하기 위해 바로 스윕 왼쪽에서 전달합니다. 마찬가지로, 오른쪽 스윕 전류 값이 발견 된 최소값보다 크다면, 중간 부분이 증가되지 않고 남아있다.
1 개  솔루션 {
 2      공개  INT findUnsortedSubarray ( INT [] nums) {
 3          경우 (nums ==  || nums.length == 0 || nums.length == 1 )  0 ;
4          INT 최대 =는 Integer.MIN_VALUE 최종 = - 1 ;
5          // 어레이의 처음부터 반복 처리는보다 작은 마지막 요소 발견
 6          // 그 왼쪽에서 본 최종 최대 최종으로 표시 
(7)          에 대한 ( INT I = 0; 난 nums.length를 <; 난 ++ ) {
 8              최대 = Math.max (최대, nums [I]);
9              경우 (nums [I] < 최대)
 10                  단부 = I;
(11)          }
 (12)          의 경우 (최종 == - 1 )  0 ;
(13)  
(14)          의 INT - = 분에 Integer.MAX_VALUE이 시작 = 1 ;
(15)          에 대한이 ( int로 난 nums.length = - 1 ; I> = 0 ; 난 ... ) {
 16              분 = Math.min (분 nums [I]);
17              의 경우(nums은 [I]는> 분)
 18                  = 시작 난;
19          }
 20          리턴 끝 - + 시작 1 ;
21      }
 22 }

 

추천

출처www.cnblogs.com/beiyeqingteng/p/11371269.html