2017-10-01 5 views
2

이것은 인터뷰 질문입니다. 메소드에 대한 입력 배열이 순서를 증가 시키거나 감소시키는 지 알아보십시오. 동점은 현재 순서로 갈 것이다. 내 말은 다른 회원이 증가하고 그 중 일부 또는 그 이상이 벌금과 같고, 같은 요소가 감소하는 요소에 해당하는 경우입니다. 이 함수는 true 또는 false를 반환합니다.Java에서 단조 배열 증가 또는 감소 찾기

나는 이렇게했습니다. 나는 그들이 그것을하는 또 다른 창조적 인 방법이라면 나는 생각하고있다.

boolean isMonotonic(int[] arr){ 
    if(arr.length <= 2){ 
     return true; 
    } 
    boolean increasing = true; 
    boolean decreasing = true; 
    for(int i=1;i<arr.length;i++){ 
     if(arr[i-1] > arr[i]){ 
      increasing = false; 
     }else if(arr[i-1] < arr[i]){ 
      decreasing = false; 
     } 
     if(!increasing && !decreasing){ 
      return false; 
     } 
    } 
    return true; 
} 
+2

당신의 솔루션은 깨끗하고, 배열을 한 번만 통과하며, 훨씬 더 우아하게 mucb를 수행 할 수 있을지 확신하지 못합니다. 증가하는 haa가 감소로 전환하는 구는 다른 방법은 이전 및 이전 이동을 추적하는 것입니다. –

답변

3

귀하의 솔루션은 매우 빠르고 효율적입니다.

배열을 한 번만 반복하면 복잡하므로 선형이 O (n)이므로 더 효율적인 해결책은 없습니다.

그래, 더 많은 줄을 저장하거나 좀 더 읽기 쉽게하기 위해 Java가 제공하는 컬렉션을 사용할 수 있지만 그 이유는 무엇입니까? 개인적으로 나는이 문제에 대한 청결한 솔루션을 제공했다고 생각합니다. 스마트하고, 쉽고, 효율적인 경우 솔루션을 리팩터링 할 이유가 없습니다. :)