先給出可整合陣列的定義:如果乙個陣列在排序之後,每相鄰兩個數的差的絕對值都為1,或者該陣列長度為1,則該陣列為可整合陣列。
例如,[5, 3, 4, 6, 2]排序後為[2, 3, 4, 5, 6],符合每相鄰兩個數差的絕對值都為1,所以這個陣列為可整合陣列
給定乙個陣列arr, 請返回其中最大可整合子陣列的長度。例如,[5, 5, 3, 2, 6, 4, 3]的最大可整合子陣列為[5, 3, 2, 6, 4],所以請返回5
注意:本題中子陣列的定義是陣列中連續的一段區間,例如 [1,2,3,4,5] 中 [2,3,4] 是子陣列,[2,4,5] 和 [1,3] 不是子陣列
不能排序:注意:本題中子陣列的定義是陣列中連續的一段區間
暴力找到到每個子陣列
以上是暴力方法,優化:滿足以下兩個條件必可整合
如果定義很長很複雜,看能不能改驗證標準
public static int getlil(int arr)int len = 0;
int max = 0;
int min = 0;
hashsetset = new hashset();
for (int l = 0; l < arr.length; l++)
// arr[l..r]上無重複值
set.add(arr[r]);
max = math.max(max, arr[r]);
min = math.min(min, arr[r]);
if (max - min == r - l) }}
return len;
}public static void main(string args)
system.out.println(getlil(arr));
}
陣列 長度最小的子陣列
給定乙個含有n個正整數的陣列和乙個正整數s 找出該陣列中滿足其和 s的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。高階 如果你已經完成了o n 時間複雜度的解法,...
C 陣列長度
初學c 到陣列的時候想手動寫一下迴圈輸出陣列內容的簡單迴圈,int arrayint 1,2,3,4,5 for size t i 0 i 結果發現輸出內容不對,i的值遠遠比size大,於是查資料了解一下sizeof是什麼作用 sizeof是乙個操作符 operator 其作用是返回乙個物件或型別所...
求陣列長度
c 求陣列長度為 int arr length sizeof arr sizeof arr 0 為了方便使用,在c語言中常定義巨集來求陣列長度 define arr len array,length 使用時,直接呼叫巨集函式即可,如 int arr int len arr len arr,len 此...