陣列的子陣列長度系列問題之四

2021-09-02 07:30:09 字數 2889 閱讀 9692

不重複列印排序陣列中相加和為給定值的所有二元組和三元組

未排序正數陣列中累加和為給定值的最長子陣列長度

未排序陣列中累加和為給定值的最長子陣列系列問題

未排序陣列中累加和小於或等於給定值的最長子陣列長度

可整合陣列的定義:如果乙個陣列在排序之後,每相鄰兩個數差的絕對值都為1,則該陣列為可整合陣列。如[5, 3, 4, 6, 2]排序之後為[2, 3, 4, 5, 6]。符合每相鄰兩個數差的絕對值為1.所以這個陣列為可整合陣列。

給定乙個整型陣列arr,返回其中最大可整合子陣列的長度。

逐個子陣列排序後進行判斷的話複雜度比較高,達到o(n^3logn)。可以用max-min == j - i這種方式來判斷。這樣可以將排序的o(nlogn)降到o(1)

#include

#include

#include

#include

using

namespace std;

bool

isintegrated

(vector<

int> arr,

int left,

int right)

return

true;}

intgetlil1

(vector<

int> arr)

}return len;

}int

getlil2

(vector<

int> arr)

s.clear()

;}return len;

}int

main()

未完待續…(11.30)

給定排序陣列arr和整數k,不重複列印arr中所有相加和為k的不降序二元組。

補充題目:給定排序陣列arr和整數k,不重複列印arr中所有相加和為k的不降序三元組。

#include

#include

using

namespace std;

void

printuniquepair

(int

* arr,

int k,

int len)}}

void

printrest

(int

* arr,

int f,

int l,

int r,

int k)}}

void

printuniquetri

(int

* arr,

int len,

int k)

}int

main()

給定陣列arr,該陣列無序,每個值均為正數,在給定乙個整數k,求arr的所有子陣列中所有元素相加和為k的最長子陣列長度。

如:arr=[1, 2, 1, 1, 1],k=3;累加和為3的最長子陣列為【1,1,1】,所以返回結果為3.

#include

#include

using

namespace std;

intgetmaxlen

(int

* arr,

int len,

int k)

else

if(sum < k)

else

sum -

= arr[left++];

}return maxsize;

}int

main()

給定乙個無序陣列arr,其中元素可正,可負,可0.給定乙個整數k,求arr所有子陣列中累加和為k的最長字陣列長度

補充題目1:給定無序陣列arr,其中元素可正,可負,可0.求arr所有子陣列中正數與負數個數相等的最長子陣列長度

補充題目2:給定乙個無序陣列arr,其中元素只是1或0.求arr中所有子陣列0和1個數相等的最長子陣列長度。

兩個補充題目可以根據原問題的原理將正數或負數做替換,進一步得到對應解。

原問題解如下:

#include

#include

#include

using

namespace std;

intmaxlen

(int

* arr,

int len,

int k)

return maxsize;

}int

main()

給定乙個無序陣列arr,其中元素可正,可負,可0.給定乙個整數k,求arr所有的子陣列中累加和小於或等於k的最長子陣列長度。

如:arr=【3,-2,-4,0,6】,k=-2;相加和小於或等於-2的最長子陣列為【-3,-2,-4,0】,長度為4.

#include

#include

using

namespace std;

intgetlessindex

(int

* arr,

int num,

int len)

else

}return res;

}int

maxlength

(int

* arr,

int k,

int len)

sum =0;

int res =0;

int pre =0;

int maxlen =0;

for(

int i =

0; i < len; i++

)return res;

}int

main()

大失誤,週末比較放鬆,學習不能!學校網速讓我望課興嘆!

陣列 長度最小的子陣列

給定乙個含有n個正整數的陣列和乙個正整數s 找出該陣列中滿足其和 s的長度最小的連續子陣列。如果不存在符合條件的連續子陣列,返回 0。示例 輸入 s 7,nums 2,3,1,2,4,3 輸出 2解釋 子陣列 4,3 是該條件下的長度最小的連續子陣列。高階 如果你已經完成了o n 時間複雜度的解法,...

最大可整合子陣列長度

先給出可整合陣列的定義 如果乙個陣列在排序之後,每相鄰兩個數的差的絕對值都為1,或者該陣列長度為1,則該陣列為可整合陣列。例如,5,3,4,6,2 排序後為 2,3,4,5,6 符合每相鄰兩個數差的絕對值都為1,所以這個陣列為可整合陣列 給定乙個陣列arr,請返回其中最大可整合子陣列的長度。例如,5...

js陣列長度獲取問題?

var test new array test test1 1 test test2 2 test 2 3 test length 輸出3 首先 test test1 1 和 test test2 2 都是屬性,可以通過test.test1 這樣來取值。但是 test 2 3 test.length...