2013-03-13 2 views
0

Java 프로그래밍에 관해 많은 평신도 질문이 있습니다.번호 목록이 순차적인지 아닌지 확인하십시오.

번호 목록이 순차적인지 여부를 확인하는 함수를 작성하고 싶습니다.

말 [1, 2, 3, 4, 5, 함수, true를 반환한다

있지만 [1, 3, 4, 9, 10]이 함수는 false를 돌려 것이기

.

아무도 도와 줄 수 있습니까?

정말 고마워요!

+1

당신이 봤어 아주 간단한 논리이다, 말했듯이 ??? – swemon

답변

3

목록의 각 요소를 보는 루프를 작성하십시오. 목록의 각 위치 i 들어

내가 + 1에서 I + 1 같리스트 테스트.

운동으로 직접 코드를 작성할 수 있습니다. ... 학습 운동으로이 문제를 치료하는 사람들을 위해 :


UPDATE를 (... 가장자리 케이스를 처리하는 것을 잊지 마십시오).

간단한 직접 구현 방식이 가장 좋습니다. 예 : @ Joe의 최종 답변. 그러나, 간단한 방법은 항상 음 ... 또는 전혀 작동하지 않습니다

  • 일부 자바 List 구현 O(N)하는 get 방법이있다. 이는 전체적으로 O(N^2) 알고리즘으로 이어질 것입니다.
  • 가끔 반복자를 사용하여 목록에만 액세스 할 수 있습니다. 즉 list.get(i)은 옵션이 아닐 수도 있습니다.

이러한 경우 반복기를 사용하여 목록을 한 번 통과하는 알고리즘을 구현할 수 있습니다. 변수에 "이전 요소"를 유지해야합니다.

0

논리가 간단합니다. 첫 번째 숫자를 가져 와서 다음 값과 일치하는지 확인하십시오. 이렇게 인접한 값을 확인하십시오. 어느 시점에서든 조건이 실패하면 중단하십시오. 모든 if 조건이 true이면 목록이 순차적입니다.

0

스티븐 C는

int a[] = { 1, 2, 3, 4, 5,7 }; 
     boolean flag = true; 
     for (int i = 0; i < a.length - 1; i++) { 
      if (a[i + 1] != a[i] + 1) { 
       flag = false; 
       break; 

      } 
     } 
     System.out.println("Flag is " + flag); 
+0

닫기 ...하지만 시가가 없음 :-) –

+0

(힌트 : 목록의 첫 번째 요소는 항상 1로 표시됩니다.) –

+0

왜 작동하지 않는지 명확하지 않습니다. 여기에 완전한 main 메서드를보고 직접 테스트하십시오. public static void main (String args []) { \t \t int a [] = {2, 3, 4, 5,6}; \t \t 부울 플래그 = 참; 위한 \t \t는 (; 나는 a.length <- 1]이 [0] = int로 난 내가 ++) { \t \t \t 경우 (a [i가 + 1]!= a [i] + 1) { \t \t \t \t flag = false; \t \t \t \t 휴식; \t \t \t \t \t }} \t \t에서 System.out.println ("플래그가"+ 플래그); \t} – Joe2013

관련 문제