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

2021-08-15 13:27:55 字數 963 閱讀 5143

【題目】

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

【補充題目】

給定乙個無序陣列arr,其中元素可正、可負、可0,給定乙個整數k。求arr中所有的子陣列中正數與負數個數相等的最長子陣列長度。

【補充題目】

給定乙個無序陣列arr,其中元素可正、可負、可0,給定乙個整數k。求arr中所有的子陣列中0與1個數相等的最長子陣列長度。

【**】

public

static

void

main(string args) ;

system.out.println(maxl(arr,6));//3

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

public

static

intmaxl(int arr,int k)

int sum=0;

int len=0;

hashmapmap=new hashmap();

//key:從arr最左邊開始累加過程中出現過的sum值

//value:sum值最早出現的位置

map.put(0, -1);//重要,表示:當累加和為0的時候,乙個元素也沒有

for(int i=0;iif(map.containskey(sum-k))

if(!map.containskey(sum))

}return len;

}

【說明】

補充問題解法:

1.把arr中正數變為1,負數變為-1,0不變,求累加和為0的最長子陣列。

2.把arr中0變為-1,1不變,求累加和為0的最長子陣列。

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

牛客網左程雲第二課第三題,這是乙個很重要的演算法原型。問題 給定乙個無序陣列 arr,其中元素可正 可負 可 0,給定乙個整數 k。求 arr 所有的子陣列中累加和為 k 的最長子陣列長度。要求 時間複雜度 o n 分析 本題和未排序正數陣列中累加和為給定值的最長子陣列長度這個問題的區別在於,陣列中...

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

來自牛客網左程雲第二課第四題 問題 給定乙個無序陣列 arr,其中元素可正 可負 可 0,給定乙個整數 k。求 arr 所有的子陣列中累加和小於或等於 k 的最長子陣列長度。例如 arr 3,2,4,0,6 k 2,相加和小於或等於 2 的最長子陣列為 所以結果返回 4。要求 時間複雜度 n log...

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

題目 未排序陣列中累加和小於或等於給定值的最長子陣列長度 思路 依次求以陣列的每個位置結尾的 累加和小於或等於k的最長子陣列長度,其中最長的那個子陣列長度就是我們要的結果。public class maxlongslengthse sum 0 int pre 0 int len 0 int res ...