948. Bag of Tokens
2024-10-15 01:02:08
https://leetcode.com/problems/bag-of-tokens/
一开始觉得应该是个dp 题,把所有结果搜出来然后max 一下。实现以后发现组合太多了,非常慢,即使加上memorization 也是TLE
var hash = function(arr, p, s) {
arr = arr.sort();
return arr.reduce((p, c)=>p+"-"+c, "") + "_" + p + "_" + s;
}
let m = {};
var iter = function(tokens, p, s) {
if (tokens.length == 0) return s;
let h = hash(tokens, p, s);
if (m[h] != void 0) return m[h];
let result = s;
for (let i = 0; i < tokens.length; ++i) {
//option1, if we have at leaset token[i] power
if (p >= tokens[i]) {
result = Math.max(result, iter(tokens.filter((x,k)=>k!=i), p-tokens[i], s+1));
} //option2, if we have at least 1 point
if (s >= 1) {
result = Math.max(result, iter(tokens.filter((x,k)=>k!=i), p+tokens[i], s-1));
}
}
m[h] = Math.max(result, m[h]||0);
return result;
} var bagOfTokensScore = function(tokens, P) {
return iter(tokens, P, 0);
};
看了答案发现是用greedy,然而也没有证明为啥greedy 就是最优解。
最新文章
- 生成ARM汇编
- wpf,能够复制文字 及自动识别URL超链接的TextBlock
- 【java基础学习】线程
- terminator终端工具
- Caffe学习系列(19): 绘制loss和accuracy曲线
- RequireJS示例
- linux下mysql开启慢查询
- MSSQL 2005数据库与SP4补丁安装
- asp.net Post Get提交数据转Model实例
- Intersecting Lines - POJ 1269(判断平面上两条直线的关系)
- SGU 194 Reactor Cooling
- Linux设置PHP环境变量
- ★Linux命令行操作技巧(作为服务器端)
- hdu 1130 How Many Trees?(Catalan数)
- varnish 相关说明
- IDEA添加Git项目
- Android平台下利用zxing实现二维码开发
- cocosCreater开发时遇到的问题
- Smali插桩打日志
- mongoDB(Linux)