試圖找出一個陣列是單調遞增還是遞減,如果是則回傳true,否則回傳false。這是我嘗試過的代碼,但它不起作用誰能告訴我為什么?
public boolean isMonotonic()
{
boolean mono = false;
boolean inc = false;
boolean dec = false;
for (int i = 0; i< values.length-1 ;i )
{
if (values[i]<values[i 1])
{
inc = true;
}
}
for (int i = 0; i< values.length-1 ;i )
{
if (values[i]>values[i 1])
{
dec = true;
}
}
if (dec || inc == true)
{
mono= true;
}
return mono;
}
uj5u.com熱心網友回復:
如果增加或減少關系為真,您正在檢查每組兩個元素。這是有缺陷的,因為在許多情況下,您將遇到至少一組滿足這些條件的兩個元素。因此,您實際上只是在檢查陣列中的至少兩個元素是否處于遞增或遞減關系。
您要做的是通過檢查前兩個元素來確定趨勢。一旦你知道了預期的趨勢,你就可以迭代陣列,同時尋找趨勢不正確的條件。如果發生這種情況,我們可以立即回傳 false。但是,使用這種邏輯,如果我們到達陣列的末尾,我們知道我們從未違反預期趨勢,在這種情況下,我們有一個單調陣列。
這只是解決問題的一種方法。我敢肯定還有其他方法可以做到這一點。
boolean isMonotonic(int[] arr)
{
if (arr.length == 0)
return false;
if (arr.length == 1)
return true;
boolean increasing = arr[0] < arr[1];
int val = arr[0];
for (int i = 1; i < arr.length; i )
{
if (increasing && val > arr[i])
return false;
else if (!increasing && val < arr[i])
return false;
val = arr[i];
}
return true;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/531997.html
標籤:爪哇数组
