先給出可整合陣列的定義: 如果乙個陣列arr在排序之後,從最小值到最大值的順序中,每相鄰兩個數之間差的絕對值都為1,則arr為可整合陣列。 例如: arr = ,再排序之後為:,排序後符合每相鄰兩個數之間差的絕對值都為1,所以arr是可整合陣列。 給定乙個整形陣列arr,請返回其中長度最大的可整合子陣列的長度。
[5,0,1,2,4,3,9],最長可整合子陣列為[5,0,1,2,4,3],所以返回6
[6,7,3,0,1,2,4,7],最長可整合子陣列為[3,0,1,2,4],所以返回5
要求:如果陣列長度為n,時間複雜度請達到o(n^2)
分析:
首先進行窮舉,也是n^2個組合,在每個組合中,設定max和min,如果max-min=j-i,也就是區域的長度,則代表該區域為可整合陣列。
比如3 2 4 5 6,max為6,min為2,這樣假設3的下標為i,6的下標則為i+4,二者之差為4,恰好等於max-min,所以該段是可整合陣列。
#include#include #include using namespace std;
int a=;
int fun(int len)
}} return length;
}int main()
最長的可整合子陣列的長度
一 題目描述 先給出可整合陣列的定義。如果乙個陣列在排序之後,每相鄰兩個數差的絕對值都為1,則該陣列為可整合陣列。例如,5,3,4,6,2 排序之後為 2,3,4,5,6 符合每相鄰兩個數差的絕對值都為1,所以這個陣列為可整合陣列。給定乙個整型陣列arr,請返回其中最大可整合子陣列的長度。例如,5,...
最長的可整合子陣列的長度
題目 先給出可整合陣列的定義。如果乙個陣列在排序後,每相鄰兩個數的差的絕對值都是1,則該陣列為可整合陣列。例如,5,3,4,6,2 排序之後為 2,3,4,5,6 符合條件,所以這個陣列為可整合陣列。給定乙個整型陣列arr,請返回其中最大可整合子陣列的長度。例如,5,5,3,2,6,4,3 的最大可...
最長可整合陣列
先給出可整合陣列的定義。如果乙個陣列在排序之後,每相鄰兩個數差的絕對值都為1,則該陣列為可整合陣列。例如,5,3,4,6,2 排序之後為 2,3,4,5,6 符合每相鄰兩個數差的絕對值都為1,所以這個陣列為可整合陣列。給定乙個整型陣列arr,請返回其中最大可整合子陣列的長度。例如,5,5,3,2,6...