5 回答

TA貢獻1799條經(jīng)驗 獲得超6個贊
我沒有做過這道題目,臨時想到的算法:
對目標解二分,假設當前數(shù)是num
,那么遍歷每一行,對于第i
行,不大于num
的數(shù)字個數(shù)是min(num / i, m)
,累加之后得到總的計數(shù)cnt
。
如果cnt
小于k
那么到右半?yún)^(qū)間繼續(xù)找;否則到左半?yún)^(qū)間繼續(xù)找。
時間復雜度O(n * log(n * m))
,綽綽有余。

TA貢獻1789條經(jīng)驗 獲得超8個贊
n*m的矩陣結果你是一定需要的。
我給你個方法,造一個0-n*m的數(shù)組A,每個元素都為0,
然后你兩個for循環(huán)計算出矩陣中的每個數(shù)t,將A[t]++,
計算完了之后你有一個一維數(shù)組可能是這樣的【0,1,2,3,1,0,2,5,。。?!?br/>你從左往右加,直到到結果大于等于K,此時的下標i就是你要的結果

TA貢獻1772條經(jīng)驗 獲得超5個贊
def multiply(n, m, k):
if k > n * m:
return None
l = []
for i in range(1, n + 1):
for j in range(1, m + 1):
l.append(i * j)
return l[k]
print multiply(2,3, 7)
添加回答
舉報