最大可整合子陣列長度

2022-09-08 08:15:12 字數 1255 閱讀 9897

先給出可整合陣列的定義:如果乙個陣列在排序之後,每相鄰兩個數的差的絕對值都為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 此...