復(fù)盤|第84場雙周賽
合并相似的物品
【模擬】每個元素都是一個長為 2 的列表,所以可以直接作為鍵值對傳入dict,然后通過Counter把值加起來。
統(tǒng)計壞數(shù)對的數(shù)目
【枚舉】1.題目轉(zhuǎn)化為求i<j的(i,j)對數(shù)量減掉j - i = nums[j] - nums[i]的數(shù)量。2.移項之后,找滿足nums[j] - j = nums[i] - i的(i,j)數(shù)量(i<j)??偣瞡(n - 1)/2對,要減掉的數(shù)量用哈希表統(tǒng)計。
任務(wù)調(diào)度器 II
【模擬】按題意模擬,完成任務(wù)天數(shù)加一,并判斷是否需要間隔space天。
將數(shù)組排序的最少替換次數(shù)
【貪心】1.倒序遍歷,假設(shè)當前操作出的最小值為m,如果nums[i] > m,則需要拆分nums[i],是的拆分出的數(shù)字最大值不超過m。2.假設(shè)拆分出x個數(shù)字,這x個數(shù)字都不超過m,可知x≥ceil(nums[i]/m),為使操作次數(shù)最小,x=ceil(nums[i]/m)。3.操作次數(shù)k = x - 1。4.為使拆分出的數(shù)字最小值盡可能大,可證拆分出的最小數(shù)字為nums[i]//x。 [證明]①若這x個數(shù)均為nums[i]//x,則有x(nums[i]//x)≤nums[i];②若這x個數(shù)均為(nums[i]//x)+1,則有x(1+(nums[i]//x))≥x(nums[i]//x)≥nums[i]聯(lián)合得到x(nums[i]//x)≤nums[i]≤x(1+(nums[i]//x))。 5.可以給出一個拆分方案,將x個數(shù)初始化為nums[i]//x,給其中的nums[i]-x(nums[i]//x)個數(shù)字加一,可以使這x個數(shù)的和恰好為nums[i].