2013-08-26 1 views
2

주어진 값에 도달 할 때까지 배열 요소를 추가하려고합니다. x 값이 도달하면 tit가 적절한 인덱스를 반환해야합니다. 소정 값 (x)가 14이면 해당 배열값에 도달 할 때까지 값에 도달 할 때까지 배열 요소를 추가합니다. 인덱스를 찾으십시오.

 
ArrayIndex|Value|Running total 
------------------------------- 
    0  | 6 | 6 
    1  | 1 | 7 
    2  | 6 | 13 
    3  | 2 | 15 

의 그 인덱스 3을 돌려, 또는 주어진 값은 2 돌려 8 인 경우, 그것을 어떻게할까요? 내가 사용할 수있는 알고리즘이 있습니까?

int given_number = 7; 
int running_total =0; 
for(int x=0;x<array.length;x++) 
{ 
    running_total+=array[x]; 
    if(given_number>=running_total) 
    { 
      //only allow once 
      setThredhold(x);//calling a mehod 



    } 
+1

을'[X]'횡설수설이다, x' 반환'시도를 돌려주는 . 그렇지 않으면 코드가 분명히 최상의 알고리즘입니다. 선형 시간과 일정한 공간, 나는 누군가가 더 잘할 수있는 방법을 보지 못합니다. –

+1

return [x] 컴파일되지 않습니다. 이 줄을 다시 생각해보아야합니다 : if (givenNumber> = runningTotal) {무슨 일이 일어나고 실제로 무엇을 검사하고 있습니까? –

+0

또한 올바른 "return x;" 줄 바꿈;" 도달 할 수없는 코드이고 컴파일 오류가 발생합니다. – Cruncher

답변

0

그것은 매우 간단하고 정직

int given_number = 7; 
    int running_total = 0; 
    int array[] = new int[23]; 
    for (int i = 0; i < array.length; i++) { 
     if (running_total >= given_number) { 
      break; 
     } else { 
      running_total += array[i]; 
     } 
    } 
} 
1

당신은이에 대한 사용자 지정 방법을 만들 수 있습니다

int findIndex(int[] array, int given_number) { 
    int running_total = 0; 
    for(int x=0; x < array.length; x++) { 
     running_total += array[x]; 
     if(given_number >= running_total) 
      return x; 
    } 
    return -1; // empty array or given_number is too big 
} 
관련 문제