優先佇列的使用 LeetCode1675

2021-10-11 22:54:45 字數 774 閱讀 2472

給你乙個由 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 天 ...