在Python中構建一個具有給定大小、總和和元素上限的不同元素陣列
假設我們有一個大小變數N,還有一個變數SUM,它是陣列中所有元素的總和,還有一個變數K,使得陣列中沒有元素大於K。我們必須找到一個所有元素都不同的正交陣列。如果沒有解決方案,則返回-1。
因此,如果輸入類似於N = 4,SUM = 16,K = 9,則輸出將為[1,2,4,9]
為了解決這個問題,我們將遵循以下步驟:
minimum_sum := (N *(N + 1)) / 2
maximum_sum := (N * K) -(N *(N - 1)) / 2
如果 minimum_sum > SUM 或 maximum_sum < SUM,則
返回 -1
res := 一個大小為N + 1的陣列,並用0到N填充
sum := minimum_sum
i := N
當 i >= 1 時,執行:
x := sum + (K - i)
如果 x < SUM,則
sum := sum +(K - i)
res[i] := K
K := K - 1
否則,
res[i] := res[i] +(SUM - sum)
sum := SUM
跳出迴圈
i := i - 1
返回 res
示例
讓我們看看下面的實現,以便更好地理解:
def get_arr(N, SUM, K): minimum_sum = (N * (N + 1)) / 2 maximum_sum = (N * K) - (N * (N - 1)) / 2 if (minimum_sum > SUM or maximum_sum < SUM): return -1 res = [i for i in range(N + 1)] sum = minimum_sum i = N while(i >= 1): x = sum + (K - i) if (x < SUM): sum = sum + (K - i) res[i] = K K -= 1 else: res[i] += (SUM - sum) sum = SUM break i -= 1 return res N = 4 SUM = 16 K = 9 print(get_arr(N, SUM, K))
輸入
4, 16, 9
輸出
[0, 1, 2, 4.0, 9]
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP