給你乙個由 n 個正整數組成的陣列 nums 。你可以對陣列的任意元素執行任意次數的兩類操作:
如果元素是偶數,除以 2
例如,如果陣列是 [1,2,3,4] ,那麼你可以對最後乙個元素執行此操作,使其變成 [1,2,3,2]
如果元素是奇數,乘上 2
例如,如果陣列是 [1,2,3,4] ,那麼你可以對第乙個元素執行此操作,使其變成 [2,2,3,4]
陣列的偏移量是陣列中任意兩個元素之間的最大差值。
返回陣列在執行某些操作之後可以擁有的最小偏移量。
n == nums.length
2 <= n <= 105
1 <= nums[i] <= 109
class
solution
int ans = nums_max - nums_min;
//結果
//建立優先佇列
priority_queue<
int>
q(nums.
begin()
, nums.
end())
;while
(q.top()
%2==0
)return ans;}}
;
[1]
優先佇列的使用
佇列的特點是先進先出。通常都把佇列比喻成排隊買東西,大家都很守秩序,先排隊的人就先買東西。但是優先佇列有所不同,它不遵循先進先出的規則,而是根據佇列中元素的優先權,優先權最大的先被取出。通常把優先佇列比喻成現實生活中的列印。乙個列印店裡有很多印表機,每台機器的效能不一樣,有的印表機列印很快,有的印表...
優先佇列的使用
堆,一種非常重要的資料結構。能實現資料的自動排序,而且排序時間複雜度為o nlogn 在n達到10 4時,o n2 級演算法就容易超時,但堆排序不會。堆可呼叫stl系統函式,簡化 容易書寫。一般情況,如果堆元素為數 字元 字串都可有用預設的排序規則。如果元素是pair型別,其比較大小的方式為先比較第...
Leetcode 排序 優先佇列 貪心
有一類題,像有n個任務,n個會議,n顆樹,要你按一定的順序執行,使得總用時最少等,通常都需要想乙個貪心策略,然後排序,再用優先佇列逐一處理。當然貪心是需要證明的,可以先找到乙個序,然後證明交換任意兩項不會更優。然而比賽的時候更多靠直覺。題意 有n顆植物,每顆植物需要先播種planttime i 天 ...