#include
#include
using namespace std;
int getminlength(int* arr, int l)
//按照增序排列得話, 如果乙個陣列最後一位用min表示,沒有亂序,應該不會存在arr[i]大於min得情況,如果存在,則需要進行排序
int min = arr[l - 1];
int nominindex = -1;
for(int i = l -2; i != -1; i--)else
}if(nominindex == -1)
int max = arr[0];
int nomaxindex = -1;
for(int i = 1; i != l; i++)else
/*if(nomaxindex == -1)*/ //這個語句不用寫是因為,在前一步已經進行判斷,如果有序,直接已經退出了,無需進行下面得判斷
return nomaxindex -nominindex +1;
}int main();
int length = getminlength(arr,sizeof(arr)/sizeof(int));
std::cout<< length<< std::endl;
}
需要排序的最短子陣列的長度
演算法描述 1.從左往右找 當前值比max小 的一系列情況 初始 max arr 0 如果當前元素比max大,max就等於當前元素 如果當前元素比max小,max不變,然後繼續往後找,直到最後一次出現 當前值比max小 的情形,記下此時的下標為k。2.從右往左找 當前值比min大 的一系列情況 初始...
c 返回乙個陣列
bqg s complexity analysis 最近遇到乙個很不一般的事情,返回乙個陣列時,我們可以直接返回它的首位址,但是如果呼叫兩次以上,返回的數值就是有問題的了。呼叫兩次js 函式,分別用a b陣列存放返回的陣列值,但是接收到返回的數值居然和我返回前存放的數值不一樣。及改善 include...
演算法 需要排序的最短子陣列長度
給定乙個無序陣列,求出需要排序的最短子陣列的長度。例如 arr 返回4,因為只有 5,3,4,2 需要排序。解決這個問題可以在時間複雜度為o n 額外空間複雜度為o 1 完成。初始化變數nominindex 1,從右向左遍歷,便利的過程記錄右側出現過的數的最小值,記為min。假設當前數為arr i ...