正數陣列的最小不可組成和

2021-08-18 06:17:23 字數 1061 閱讀 5091

給定乙個正整數陣列arr,其中所有的值都為整數,以下是最小不接組成和的概念

arr=[1,2,3,4],返回11

arr=[2,3,4] 返回7

public

intbaoli(intarr)

for(int i=min+1;i!=integer.max_value ;i++)

return0;}

public

void

process(intarr,int i,int sum;hashset set)

process(arr,i+1,sum,set);//不包含當前數arr[i]

process(arr,i+1,sum+arr[i],set);//包含當前數

}

分析

思路分析

**

public

intdymicp(intarr)

}for(int i=min;i!=dp.length;i++)

return sum+1;

}

複雜度

分析將arr排序,必然有arr[0]=1;

從左往右計算每個位置i上的range(0<=i<=n).range代表計算到arr[i]時,[1,range]區間內得所有正數都可以被arr[0…i-1]的某個子集相加表示,初始時arr[0],range=0;

如果arr[i]>range+1,因為arr是有序的,所以arr[i]往後的數都不是出現range+1,直接返回;如果arr[i]<=range+1,說明[1,range+arr[i]]區間內的所有整數都可以被arr[0,…i-1]的某個子集表示,這是因為區間[1,range],可以由[0..i-1]子集和表示,對於k>range,的數,k-arr[i]

實現

public

intfin(int arr)

return range+1;

}

正數陣列的最小不可組成和

題目 給定乙個正數陣列arr,其中所有的值都是整數,以下是最小不可組成和的概念 把arr每個子集內的所有元素加起來會出現很多值,其中最小的記為min,最大的記為max。在區間 min,max 上,如果有數不可以被arr某乙個子集相加得到,那麼其中最小的那個數就是arr的最小不可組成和。在區間 min...

正數陣列的最小不可組成和

正數陣列的最小不可組成和 給定乙個正數陣列arr,其中所有的值都為整數,以下是最小不可組成和的概念 請寫函式返回正數陣列arr的最小不可組成和 時間複雜度為o n i 1nar ri o n times sum n arr i o n i 1n arri 額外空間複雜度為o i 1n arri o ...

正數陣列的最小不可組成和 高階問題

正數陣列的最小不可組成和 高階問題 給定乙個正數陣列arr,其中所有的值都為整數,以下是最小不可組成和的概念 請寫函式返回正數陣列arr的最小不可組成和 保證1一定出現過!要求 時間複雜度為o n logn o nlogn o nlog n 額外空間複雜度為o 1 o 1 o 1 輸入描述 第一行乙...