未验证 提交 85301014 编写于 作者: T TCeason 提交者: GitHub

add a cpp hash map version for stoneGame (#599)

上级 7b6cab83
......@@ -221,7 +221,7 @@ int stoneGame(int[] piles) {
python3版本
* python3版本
[SCUHZS](https://github.com/brucecat)提供
......@@ -287,3 +287,44 @@ class Solution:
```
* C++ 版本
[TCeason](https://github.com/TCeason) 提供
这里采用 hash map 来解决问题
```cpp
class Solution {
public:
unordered_map<int, int> memo;
int dfs(vector<int> &piles, int index) {
// 从两边向中间获取
// index 值为 1/2 piles.size() 时可以停止算法
if (index == piles.size() / 2)
return 0;
// 减少计算,快速返回已有结果
if (memo.count(index))
return memo[index];
// 防止第一次取最右时越界
int n = piles.size() - 1;
// 先手选择最左边或最右边后的分数
int l = piles[index] + dfs(piles, index + 1);
int r = piles[n - index] + dfs(piles, index + 1);
// 返回先手左或右边的最高分
return memo[index] = max(l, r);
}
bool stoneGame(vector<int>& piles) {
// 最佳发挥时:
// 先手得分 * 2 > 总大小 则先手者胜利
return dfs(piles, 0) * 2 > accumulate(begin(piles), end(piles), 0);
}
};
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册