我試圖解決谷歌foobar的挑戰,但我堅持如何改變這個使用遞歸。任何指針將是有益的Google Foobar Numbers Station
public static int[] answer(int[] l, int t) {
// convert the array into a list
List<Integer> list = new ArrayList<>();
for (int i : l) {
list.add(i);
}
for (int i = 0; i < list.size(); i++) {
Integer n = list.get(i);
if (i >= 1) {
Integer nMinus1 = list.get(i - 1);
Integer nMinus2;
Integer nMinus3;
Integer nMinus4;
Integer nMinus5;
Integer nMinus6;
if (n + nMinus1 == t) {
// done
return new int[]{i - 1, i};
} else if (i >= 2) {
nMinus2 = list.get(i - 2);
if (n + nMinus1 + nMinus2 == t) {
// done
return new int[]{i - 2, i};
} else if (i >= 3) {
nMinus3 = list.get(i - 3);
if (n + nMinus1 + nMinus2 + nMinus3 == t) {
// done
return new int[]{i - 3, i};
} else if (i >= 4) {
nMinus4 = list.get(i - 4);
if (n + nMinus1 + nMinus2 + nMinus3 + nMinus4 == t) {
// done
return new int[]{i - 4, i};
} else if (i >= 5) {
nMinus5 = list.get(i - 5);
if (n + nMinus1 + nMinus2 + nMinus3 + nMinus4 + nMinus5 == t) {
// done
return new int[]{i - 5, i};
} else if (i >= 6) {
nMinus6 = list.get(i - 6);
if (n + nMinus1 + nMinus2 + nMinus3 + nMinus4 + nMinus5 + nMinus6 == t) {
// done
return new int[]{i - 6, i};
}
}
}
}
}
}
}
}
return new int[]{-1, -1};
}
這裏是這樣的問題:
鑑於列表L爲[4,3,5,7,8]和密鑰t爲12時,功能答案(1,1- t)將返回列表[0,2],因爲列表l包含從索引0開始到索引2結束的子列表[4,3,5],其中4 + 3 + 5 = 12,即使那裏是稍後在列表中發生的較短序列(5 + 7)。另一方面,給定列表l爲[1,2,3,4],關鍵字t爲15,函數answer(l,t)將返回[-1,-1],因爲沒有子列表的列表l可以總結爲給定的目標值t = 15。
是谷歌foobar爲你呢? – MacroMarc
不好,工作正常 – jayfah