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 ...