提示:以下是本篇文章正文内容,下面案例可供参考
1.自己的暴力解法
无
2.自己的进阶解法
class Solution {
public:
int totalFruit(vector<int>& fruits) {
vector<int> v;
int r = 0, nex = 0, sum = 0, max = 0;
while (r < fruits.size())
{
if (v.size() == 0)
{
v.push_back(fruits[r]);
++sum;
++r;
max = sum > max ? sum : max;
}
else if (v.size() == 1)
{
if (fruits[r] != v[0]) v.push_back(fruits[r]);
nex = r;
++sum;
++r;
max = sum > max ? sum : max;
}
else
{
if (fruits[r] == v[0] || fruits[r] == v[1])
{
++sum;
++r;
max = sum > max ? sum : max;
}
else
{
max = sum > max ? sum : max;
for (auto ch : v) v.pop_back();
sum = 0;
r = nex;
}
}
}
return max;
}
};
3.自己的库函数解法
无
4.题解的暴力解法
无
5.题解的进阶解法
无
6.总结
本题类似于滑动窗口。分类讨论需要很仔细啊,做的时候需要反复提交,逐用例debug才能勉强拼凑出来答案,一次还真想不全面。
本文详细记录了解决LeetCode题目'水果成篮'的过程,从暴力解法到进阶解法,再到使用库函数的优化。作者通过分类讨论和反复调试,逐步完善解题思路,重点探讨了滑动窗口的应用和需要注意的细节。
6856

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



