134.加油站
参考暴力解法中:for循环适合模拟从头到尾的遍历,而while循环适合模拟环形遍历,要善于使用while!用取余方法环形遍历太妙了!!!
然后是参考贪心算法二,这个思路是不可能想出来的了。
因为题目保证答案唯一,下列是根据测试集做出来的。。。只打败5%,所以也不作数吧
class Solution {
public:
int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {
vector<int> res;
for (int i = 0; i < gas.size(); i++)
res.push_back(gas[i] - cost[i]);
int sum = 0;
for (int r : res) sum += r;
if (sum < 0) return -1;
for (int i = 0; i < res.size(); i++) {
if (res[i] < 0) continue;
if (i < res.size() - 1 && res[i] == 0 && res[i + 1] == 0) continue;
int s = 0;
for (int j = i; j < res.size(); j++) {
s += res[j];
if (s < 0) break;
}
if (s < 0) continue;
for (int j = 0; j < i; j++) {
s += res[j];
if (s < 0) break;
}
if (s < 0) continue;
else return i;
}
return -1;
}
};
135.分发糖果
难。类似的题不要两边一起比较,要两边分别考虑。
860.柠檬水找零
终于碰到一题超级简单的了。
406.根据身高重建队列
想不到。但还是学习了一种思想:两个维度一起考虑的话,先确定一边然后贪心另一边,两边一起考虑,就会顾此失彼。
916

被折叠的 条评论
为什么被折叠?



