2013-08-26 32 views
2

我想添加一個數組的元素,直到它達到給定值x,當達到該值時,tit應該返回適​​當的索引該數組添加數組的元素,直到它達到一個值,當達到的值查找索引

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

的,如果給定值x爲14,它應該返回的索引3,或者如果給定的值是8,它應該返回2,如何做呢?有什麼算法我可以使用?

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 
} 
相關問題