加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
2pointers.cpp 1.75 KB
一键复制 编辑 原始数据 按行查看 历史
FFFgit 提交于 2024-09-19 12:09 . 2
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 移除0
void moveZeroes(vector<int> &nums)
{
vector<int> res(nums.size(), 0);
int k = 0;
for (int i : nums)
{
if (i != 0)
{
res[k] = i;
k++;
}
}
nums = std::move(res);
}
// 盛水最多的容器
int maxArea(vector<int> &height)
{
int l = 0, r = height.size() - 1;
int res = 0;
while (l < r)
{
int area = std::min(height[l], height[r]) * (r - l);
res = std::max(area, res);
if (height[l] <= height[r])
l++;
else
r--;
}
return res;
}
// 三数之和
vector<vector<int>> threeSum(vector<int> &nums)
{
typedef vector<vector<int>> vvi;
vvi res;
std::sort(nums.begin(), nums.end());
int i = 0;
for (; i < nums.size() - 2; i++)
{
int l = i + 1, r = nums.size() - 1;
if (nums[i] > 0)
return res;
// nums[i]去重
if (i > 0 && nums[i] == nums[i - 1])
continue;
while (l <= r)
{
if (nums[i] + nums[l] + nums[r] > 0)
r--;
else if (nums[i] + nums[l] + nums[r] < 0)
l++;
else
{
res.push_back(vector<int>{nums[i], nums[l], nums[r]});
// nums[r]去重
while (l <= r && nums[r] == nums[r - 1])
{
r--;
}
// nums[l]去重
while (l <= r && nums[l] == nums[l + 1])
{
l++;
}
r--;
l++;
}
}
}
return res;
}
int main()
{
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化