双指针法
用双指针法
CervoLu
这个作者很懒,什么都没留下…
展开
-
18 四数之和
类似于三数之和,首先排序,确定前两位之和用双指针确定后两位,注意重复问题的解决。#include<iostream>#include<vector>#include<algorithm>using namespace std;class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) {原创 2021-11-29 15:47:49 · 59 阅读 · 0 评论 -
350两个数组的交集
我写了有点麻烦了,用了两个哈希表,实际上一个就够了,题解的两个方法是哈希表和排序+双指针,都挺有收获的#include<iostream>#include<vector>#include<unordered_map>#include<algorithm>using namespace std;//自己写的, 两个哈希表,太麻烦了class Solution {public: vector<int> intersect(vec原创 2021-11-15 19:33:28 · 366 阅读 · 0 评论 -
16最接近的三数之和
参考15三数之和的想法,使用排序加双指针的方法。#include<iostream>#include<vector>#include<algorithm>using namespace std;class Solution {public: int threeSumClosest(vector<int>& nums, int target) { int n = nums.size(); int ans原创 2021-11-13 23:44:14 · 354 阅读 · 0 评论 -
15三数之和
这题和两数之和看着像但是又有区别,这里先把数组排序,然后将后面两个数用双指针处理。#include<iostream>#include<algorithm>#include<vector>using namespace std;class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { int n = nu原创 2021-11-09 22:23:18 · 85 阅读 · 0 评论 -
直方图的水量
题目链接这里用了双指针法一个点水量取决于其左边最大值和右边最大值中的较小者,每次移动left和right中较小的那个就可以。#include<iostream>#include<vector>using namespace std;class Solution {public: int trap(vector<int>& height) { int left = 0; int right = height.si原创 2021-11-05 16:07:45 · 118 阅读 · 0 评论 -
11盛最多水的容器
模式识别:双指针法这种需要动两头的都可以用双指针法,这题的思路是,只移动短边,因为如果移动长边,还是以短边为妥协的,每次只移动短边,不会错过正确答案。#include<iostream>#include<vector>using namespace std;//笨方法,超出时间限制了class Solution1 {public: int maxArea(vector<int>& height) { int max = 0;原创 2021-11-05 10:55:05 · 68 阅读 · 0 评论