位元組跳動 Magic

2021-08-22 13:47:07 字數 1815 閱讀 1526

【題目描述】 給乙個包含 n個整數元素的集合 個整數元素的集合 a,乙個包含 m個整數元素的集合 b。

定義 magic操作為,從乙個集合中取出元素放到另里且過後每的平均值都大於操作前。

注意以下兩點:

①不可以把乙個集合的元素取空,這樣就沒有平均值了

②值為 x的元素從集合 b取出放入集合a,但集合 a中已經有值為 x的元素,則 a的平均值不變(因為集 合元素不會重複), b的平均值可能會改變(因為 x被取出了)

問最多可以進行少次 magic操作

輸入:3 5

1 2 5

2 3 4 5 6

輸出:2

題目整體不難,記錄一下幾個細節點:

1.題目涉及轉移元素,因為轉移後被轉的平均數要變大,而轉入相同的數不會替換原來的元素,也不會改變原本的平均值,所以這裡存放資料的時候都用的是集合,即set. set裡的元素就像字典的key值,不存在重複。集合用set()構建。因為涉及後續比較,格式要轉為float。

2.用到了乙個python中的無窮大作為比較。寫法:float('inf')。

自己的**如下:

class magic:

def findmin(self, biggerset, smallerset, meana, meanb):

min_val = float('inf')

if not biggerset:

return -1

for element in biggerset:

if min_val > element and element < meana and element > meanb and element not in smallerset:

min_val = element

if min_val == float('inf'):

return -1

return min_val

def swap(self, a, b):

return [b, a]

def mean(self, seta):

return sum(seta)/len(seta)

if __name__ == '__main__':

[n, m] = list(map(int, input().split(' ')))

seta = set(map(float, input().split(' '))) # 用set確定其不能重複

setb = set(map(float, input().split(' ')))

m = magic()

meana = m.mean(seta)

meanb = m.mean(setb)

if meana < meanb: # 確保是seta的平均比setb大

temp = set()

temp = seta

seta = setb

setb = temp

[meana, meanb] = m.swap(meana, meanb)

step = 0

min_val = m.findmin(seta, setb, meana, meanb)

while(min_val != -1):

seta.remove(min_val)

meana = m.mean(seta)

setb.add(min_val)

meanb = m.mean(setb)

step += 1

min_val = m.findmin(seta, setb, meana, meanb)

print(step)

位元組跳動mysql面試 位元組跳動 Golang面試

應朋友之邀,今天下午去位元組送了顆人頭,最後不負眾望,被面試官攆出來了 一面mysql索引快的原理 回答這個問題需要先看一下資料庫的儲存結構 頁結構頁和頁之間的關係 頁和頁之間的關係 有個知識,之前不知道的 聚集索引 以主鍵建立的索引,葉子節點儲存的是表中的資料 非聚集索引 非主鍵建立的索引,葉子節...

位元組跳動 Misc betgame

我太難了 棧溢位都還沒學會去做堆題,硬剛了幾個小時,算了,先回來把這題的wp寫了 一道misc題簽到題,相當於猜拳遊戲 剛開始做的時候還卡了我挺長時間,準備暴力跑的話,理論上最多要試3 30次。然而試了幾次發現,每次進入遊戲,第乙個只要輸和它給的一樣的,都是win。這說明這題其實不是隨機的,然後多試...

位元組跳動面試

不經歷大廠的歷練,你永遠不知道自己有多low,也不知道自己幹啥要去投位元組跳動,可能是要去受下打擊。首先是自我介紹,然後問專案亮點 可憐我憋不出來亮點 然後就是基礎問題 送命題 1 hashmap的結構知道吧,敘述一下 2 hashmap如果有衝突怎麼辦 3 hashmap鍊錶過長怎麼辦 4 has...