令牌放置 leetcode948

2021-10-09 04:20:42 字數 542 閱讀 2948

1、 本題主要依據乙個原則:能量換積分時取小能量,積分換能量時取大能量。所以需要保證陣列有序。

2、 先對陣列進行排序,然後雙指標分別指向陣列左右端點。

3、 定義積分:count表示不兌換最後一次,countchange表示兌換最後一次(能量不足時有沒有必要兌換)

4、 雙指標left>right時迴圈break,特別說明一下當left=right時可能left或者right數值改變後未進行操作。

5、 當前能量小於最小能量時直接break,返回結果;否則小能量換積分(要儲存當前積分值與後續積分換大能量進行比較,考慮是否交換最後一次),left++一次,要再次判斷是否left<=right,能量不足時積分換大能量。

6、 迴圈結束後,要考慮是否交換最後一次能量。

class

solution

if(p < tokens[left]

)else}}

}if(count > countchange)

return countchange;

}}

leetcode 948 令牌放置

你的初始能量為p,初始分數為0,只有一包令牌。令牌的值為token i 每個令牌最多只能使用一次,可能的兩種使用方法如下 在使用任意數量的令牌後,返回我們可以得到的最大分數。示例 1 輸入 tokens 100 p 50輸出 0示例 2 輸入 tokens 100,200 p 150輸出 1示例 3...

Leetcode 948 令牌放置

你的初始能量為p,初始分數為0,只有一包令牌。令牌的值為token i 每個令牌最多只能使用一次,可能的兩種使用方法如下 在使用任意數量的令牌後,返回我們可以得到的最大分數。示例 1 輸入 tokens 100 p 50輸出 0示例 2 輸入 tokens 100,200 p 150輸出 1示例 3...

LeetCode 948 令牌放置(貪心)

你的初始能量為 p,初始分數為 0,只有一包令牌。令牌的值為token i 每個令牌最多只能使用一次,可能的兩種使用方法如下 在使用任意數量的令牌後,返回我們可以得到的最大分數。示例 1 輸入 tokens 100 p 50輸出 0 示例 2 輸入 tokens 100 200 p 150輸出 1 ...