3 回答

TA貢獻1876條經(jīng)驗 獲得超7個贊
由于 89 較大,我認為您需要數(shù)組中最長非遞減子序列的局部最大值。這個問題沒有很好地表述,所以可能沒有作業(yè)。
array: 12 87 3 10 55 69 40
sequences: 12 87
3 10 55 *69* answer
40
int maxOfLongestSubsequence(int[] a) {
int maxSeqLength = 0;
int max = Integer.MIN_VALUE;
int seqStart = -1;
for (int i = 0; i <= a.length; ++i) {
if (i == 0 || i == a.length - 1 || a[i] < a[i - 1]) { // New subsequence
int seqLength = i - seqStart;
if (i - seqLength > maxSeqLength) {
maxSeqLength = seqLength;
max = a[i - 1];
}
seqStart = i;
}
}
return max;
}
闡述問題。像我一樣描述數(shù)據(jù)。并將其編程出來。

TA貢獻1770條經(jīng)驗 獲得超3個贊
只需將默認最大值設(shè)置為數(shù)組中的第一個值即可。然后,迭代數(shù)組,將該值與數(shù)組中的下一個值進行比較。如果較大,則將其分配給 max。繼續(xù)到數(shù)組末尾。

TA貢獻1772條經(jīng)驗 獲得超8個贊
您可以像這樣選擇 int 數(shù)組的最大值:
int [] numbers = new int[]{12,87,3,10,55,69,40};
int max = numbers[0];
for(int current : numbers) {
max = current >= max ? current : max;
}
System.out.println(max);
添加回答
舉報