![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
qian笑
这个作者很懒,什么都没留下…
展开
-
781
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<cmath> #include<queue> #include<vector> #include<map> #include<unordered_map> #include<string> #include<cctype原创 2021-04-09 14:17:59 · 81 阅读 · 0 评论 -
数组11
题意:给定一个数组a表示每个位置的高,求出两个边界组成的最大容器 分析:使用双指针方法,area = min(a[left], a[right])*(right-left);初始时分别指向数字最左和最右,当间隔减少时,要使得area变大则其高度一定要变大,如果移动较高的那一边则其高度绝不会大于原先的高度。 int r = height.size()-1,l=0,ans = 0; while(l<r){ int area = min(height[r].原创 2021-03-31 13:59:02 · 85 阅读 · 0 评论 -
数组16
/* 题意:找出给定数组中包含三个元素,其和最接近目标值的和 分析:基于15的思路,在第二重利用双指针,如果sum=target,则直接返回答案,如果sum>target,则右指针左移,否则左指针右移 ************ 这里有一个精简代码的方法可以去记忆* auto update = [&](int cur){。}; * * * * */ int threeSum(vector<int>& nums, int targ原创 2021-03-29 16:39:29 · 176 阅读 · 0 评论 -
数组15
题意:找出给定数组中包含三个元素,其和等于0且不重复的三元组 分析:先对数组进行排序,用三重循环(分别为a、b、c)来暴力破解时注意为了笔面重复一定要把相应层的指针指向 相同元素的最后一个。进一步的改进,可以在第三重循环时利用三数和为0进行改进,可以发现,第二重指针从小到达, 而第三重指针从大到小,为了避免重复还应该将b<=c加入条件中 注意:三元组不重复 */ vector<vector<int>> threeSum(vector<int>& nums)原创 2021-03-29 15:45:18 · 118 阅读 · 0 评论 -
数组4
ouble findkmin(vector<int>& nums1, vector<int>& nums2, int k) { int n = nums1.size(); int m = nums2.size(); int p1 = 0, p2 = 0; while (true) { //边界情况 if (p1 == n) return nums2[p2 + k - 1]; if (p2 == m) return nums1[p1 +原创 2021-03-29 11:20:28 · 91 阅读 · 0 评论