2013-05-08 2 views
0

I는 y 축 화소 수의 시퀀스 (수평 투영 히스토그램)는 다음과 같은 수의 일부 서열이 포함이 배열 가지고자바 int 배열에서 각 서브 시퀀스의 시작과 끝을 찾아

[ 0 0 3 13 16 16 18 19 19 18 14 10 8 0 0 0 0 0 7 13 15 16 19 20 18 17 14 9 0 0 0 0 ] 
    ^      ^
    start       end 

이 배열에서 각 하위 시퀀스의 시작 색인과 끝 색인을 어떻게 찾을 수 있습니까?
가이 같은 것 내가이 예를 기대 : 제 1 서브 순서 :startIndex = 2, endIndex = 12초 부 시퀀스 :startIndex = 18, endIndex = 27.

내가 생각 해낸 것을 :

for(int i =0; i<pixels.length; i++){ 
     System.out.println(pixels[i]); 
     if(pixels[i] != 0) { 
      start = i; 
      System.out.println("start= " + start); 
     } else if(pixels[i] == 0){ 
      end = i; 
      System.out.println("end= " + end); 
     } 
    } 

난 어떤 도움을 주셔서 감사합니다.

+1

당신은 귀하의 질문에 조금 명확히 수 있을까? –

+0

1) 문제를 설명하고 어떻게 할 수 없지만 지금까지 질문하지 않았습니다 (구체적이고 답할만한 질문은 말할 것도 없습니다). 귀하의 질문은 무엇인가? 2) [당신은 무엇을 시도 했습니까?] (http://www.whathaveyoutried.com/) 나는 우리에게 묻는 것 외에 *를 의미합니다. –

+0

그리고 .. '?' 그 많은 단어들에서? –

답변

0

배열을 반복 할 때 이미 시퀀스를 시작했다면 추적하지 않습니다.

이 작은 변화와

그것이 내가 당신을 아주 그렇게 여기에 대답을하지 않으

int start=-1; 
for(int i =0; i<pixels.length; i++){ 
     System.out.println(pixels[i]); 
     if(pixels[i] != 0 && start == -1) { 
      start = i; 
      System.out.println("start= " + start); 
     } else if(pixels[i] == 0 && start != -1;){ 
      end = i; 
      start = -1; 
      System.out.println("end= " + end); 
     } 
    } 
0

작동합니다 당신이 할 수있는, 당신은 0을 발생한

  • while 도움이 될 몇 가지 논리입니다 건너 뛰십시오.
  • 첫 번째 0이 시작이됩니다.
  • while 0이 나오지 않으면 계속 진행하십시오. 1. 그럼 당신은 또한 길이가 제로 시퀀스와 시퀀스 종료 다룰 있는지 확인하려면 1

단계로 이동 - g

  • 당신이 제로가 발생, 최종 인덱스입니다. 그런

  • 0

    뭔가 작업을해야합니다 :

    start = -1; 
    for(int i =0; i<pixels.length; i++){ 
          System.out.println(pixels[i]); 
          if(pixels[i] != 0 && start == -1) { 
           start = i; 
           System.out.println("start= " + start); 
          } else if(pixels[i] == 0 && start != -1){ 
           end = i; 
           start = -1; 
           System.out.println("end= " + end); 
          } 
         } 
    
    관련 문제