
双指针
SYaoJun
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
209. 长度最小的子数组
思路考查点:双指针达到目标值就开始滑动左边的指针代码class Solution {public: int minSubArrayLen(int target, vector<int>& nums) { int n = nums.size(); int len = n + 1; for(int i = 0, j = 0, s = 0; i < n; i++){ s += nums[i]; whil原创 2021-10-03 23:19:54 · 124 阅读 · 0 评论 -
5883. 判断单词是否能放入填字游戏内
题目链接考点:枚举+搜索+双指针代码正序和反序对比枚举每行和每列中的空白区间核心在于比对已经填充过的单词class Solution {public: int m, n, t; bool placeWordInCrossword(vector<vector<char>>& board, string word) { // 判断一下二维数组中是否有长度为n的连续空白区域 t = word.size();原创 2021-09-26 23:57:02 · 154 阅读 · 0 评论 -
AcWing 3624. 三值字符串
题目链接双指针注意:数组初始化特殊值#include <iostream>#include <cstring>#include <algorithm>using namespace std;int n;int cnt[3];char s[200010];int main(){ scanf("%d", &n); while (n -- ){ scanf("%s", s); int原创 2021-06-11 10:26:11 · 156 阅读 · 1 评论 -
15. 三数之和
判重很关键class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> res; sort(nums.begin(), nums.end()); ...原创 2019-09-04 08:12:16 · 112 阅读 · 0 评论 -
42. 接雨水
题目:42. Trapping Rain Water难度:困难类型:双指针 动态规划星级:五星推荐题意:柱子的高度是由两边的最小值决定的,统计两边的最值,然后取最小的高度与原高度相减。版本1class Solution {public: int trap(vector<int>& h) { int n = h.size()...原创 2020-03-29 21:18:29 · 148 阅读 · 0 评论 -
1013. 将数组分成和相等的三个部分
题目链接DFS+剪枝先找到第一个满足的数组 然后从剩余的数组中找另外两个和等于target的数组看了题解才发现有更好的双指针解法。class Solution {public: vector<int> sum; bool res = false; bool canThreePartsEqualSum(vector<int>& A)...原创 2020-03-11 09:58:20 · 240 阅读 · 0 评论 -
1140 Look-and-say Sequence (20 分)
知识点:字符串 双指针版本1耗时6分钟注意使用双指针的时候,更新下标的方式。#include <cstdio>#include <cmath>#include <iostream>#include <string>#include <vector>#include <cstring>#include <...原创 2019-12-03 08:40:49 · 119 阅读 · 0 评论 -
统计单词【华中科技大学】★
链接:https://www.nowcoder.com/questionTerminal/11c6e7c9987c4ab48f8cdd8834c27064 来源:牛客网编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。 (凡是以一个或多个空格隔开的部分就为一个单词) 输入描述:输入包括1行字符串,以“.”结束,字符串中包含多个原创 2018-01-04 00:29:33 · 330 阅读 · 0 评论 -
字符串的统计字符串
字符串+双指针#include <cstdio>#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std;int main(){ string str; getline(cin, str); ...原创 2019-09-30 14:58:21 · 112 阅读 · 0 评论 -
800. 数组元素的目标和
双指针题目链接#include <iostream>using namespace std;const int N = 1e5+7;int A[N], B[N];int main(){ int n, m, x; cin>>n>>m>>x; for(int i = 0; i < n; i++) cin>&...原创 2019-09-03 19:39:51 · 170 阅读 · 0 评论 -
799. 最长连续不重复子序列
双指针模板题题目链接#include <cstdio>#include <iostream>#include <string>using namespace std;const int N = 1e5+7;int a[N], s[N]; int main(){ int n, res = 0; cin>>n; for(int ...原创 2019-09-03 19:12:30 · 449 阅读 · 0 评论 -
11. Container With Most Water
双指针class Solution {public: int maxArea(vector<int>& height) { //从两边往中间枚举, 保留最大值,优先舍弃最短边 int ans = 0; int l = 0, r = height.size() - 1; while(l < r){...原创 2019-09-03 15:48:57 · 116 阅读 · 0 评论 -
3. 无重复字符的最长子串
class Solution {public: int lengthOfLongestSubstring(string s) { unordered_map<char, int> mp; int res = 0; for(int i = 0, j = 0; i < s.size(); i++){ m...原创 2019-08-31 22:20:18 · 101 阅读 · 0 评论 -
找一对数
输入n(≤105)n(\le 10^5)n(≤105),找出其中2个数之和等于mmm解法一:暴力枚举 O(n2)O(n^2)O(n2)解法二:二分搜索O(nlogn)O(nlogn)O(nlogn)先对数组排序,然后对数组中的每个arr[i],二分查找m-arr[i]解法三:双指针O(nlogn)O(nlogn)O(nlogn)先对数组排序,然后使用两个指针,i=0,j=n−1i=0,j...原创 2019-05-17 10:41:07 · 312 阅读 · 0 评论 -
1044 Shopping in Mars (25 分)
这道题确实有点超出我的能力范围,参考了别人的博客,下面这个版本是我能懂也是大致想到但是无法实现的代码。注意:起止范围是从1开始的当然也有用二分法解的,等我刷第二遍的时候再来补吧。#include<bits/stdc++.h>using namespace std;int main(){ int n,m,p,q=1,ans=0,M=0x7fffffff; cin>&...原创 2019-07-23 17:54:11 · 200 阅读 · 0 评论 -
1048 Find Coins (25 分)
经典的双指针题题目链接#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;int v[maxn];int main(){ int n,m; cin>>n>>m; for(int i=0;i<n;i++){ cin>>v[i]; } sort(v...原创 2019-07-23 19:12:13 · 135 阅读 · 0 评论 -
167. Two Sum II - Input array is sorted
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int i = 0, j = nums.size() - 1; while(i < j){ if(nums[i] + nums[j] < ...原创 2019-08-23 17:10:10 · 107 阅读 · 0 评论 -
88. Merge Sorted Array
class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i = m - 1, j = n - 1, k = m + n -1; while(i >= 0 && j...原创 2019-08-23 17:18:28 · 109 阅读 · 0 评论 -
26. Remove Duplicates from Sorted Array
一行代码class Solution {public: int removeDuplicates(vector<int>& nums) { return unique(nums.begin(), nums.end()) - nums.begin(); }};多行代码class Solution {public: int re...原创 2019-08-23 17:47:44 · 131 阅读 · 0 评论 -
76. Minimum Window Substring
滑动窗口的题目,很经典。class Solution {public: string minWindow(string s, string t) { unordered_map<char, int> hash; string res; for(auto c: t) hash[c]++; int cnt = ha...原创 2019-08-24 07:34:37 · 109 阅读 · 0 评论 -
32. Longest Valid Parentheses
括号序列合法等价于 前缀和大于等于0且总和等于0左括号赋值为1右括号赋值为-1由于从左往右无法统计左括号比有括号多的情况,因此需要逆序再统计一遍。(((())class Solution {public: int work(string s){ int res = 0; for(int i = 0, start = 0, cnt = 0; i &...原创 2019-08-24 08:07:19 · 108 阅读 · 0 评论 -
155. Min Stack
class MinStack {public: /** initialize your data structure here. */ MinStack() { } stack<int> st, st_min; void push(int x) { st.push(x); if(st_...原创 2019-08-24 08:24:23 · 125 阅读 · 0 评论 -
51nod 1001 数组中和等于K的数对
与leetcode上的第一题类似先排序再用双指针往中间遍历#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;const int maxn = 5e4;int arr[maxn];int main()...原创 2019-08-27 09:27:14 · 127 阅读 · 0 评论 -
1029 Median (25 分)
真是是一道很搞人的题1.数据能从1开始的,好确定中间位置2.第一个数组离线,第二个数组在线处理#include<cstdio>const int maxn = 2e5+10;const int INF = 0x7fffffff;int a[maxn];int main(){ int n,m,num; scanf("%d",&n); for(int i=1;...原创 2019-02-15 15:48:02 · 223 阅读 · 0 评论