
双指针
如果我来了6
这个作者很懒,什么都没留下…
展开
-
通过删除字母匹配到字典里最长单词【leetcode 524】
解答双指针1#include <string>#include <vector>#include <algorithm>using namespace std;class Solution {public: string findLongestWord(string s, vector<string>& dictionary) { string longestWord = ""; for (in.原创 2021-12-14 17:20:49 · 360 阅读 · 0 评论 -
合并两个有序数组【leetcode 88】
解答方法1:临时数组+双指针#include <vector>using namespace std;class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { vector<int> tempArr(m+n); //nums1指针 int i = 0;.原创 2021-12-14 16:14:01 · 765 阅读 · 0 评论 -
验证回文字符串2【leetcode 680】
解答回文字符串特点关于中间字符或中间位置对称,就是左右对应字符是相等。我们需要前后两个指针,每次我们只要保证指针指向字符是相等的,那这个字符串就是回文字符串,返回true;当两个指针字符不相等时最多可以删除一个字符后继续比较,删除的字符可能是前面指针所指字符或者后面指针所指字符#include <string>using namespace std;class Solution {public: bool validPalindrome(string s) { .原创 2021-12-11 13:40:19 · 422 阅读 · 0 评论 -
反转字符串中的元音字母【leetcode 345】
解答使用双指针,一个指针从头向尾遍历,一个指针从尾到头遍历,当两个指针都遍历到元音字符时,交换这两个元音字符。为了快速判断一个字符是不是元音字符,我们将全部元音字符添加到集合 HashSet 中,从而以 O(1) 的时间复杂度进行该操作。#include <string>#include <unordered_set>using namespace std;class Solution {public: string reverseVowels(strin.原创 2021-12-11 11:58:41 · 334 阅读 · 0 评论 -
四数之和【leetcode 18】
解答排序 + 双指针解题思想:在三数之和的基础上多一层循环即可。#include <vector>#include <algorithm>using namespace std;class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { vector<vector<int>.原创 2021-12-11 11:31:19 · 313 阅读 · 0 评论 -
最接近的三数之和【leetcode 16】
解答简单一句话,先排序,然后固定第一个数a,再然后b、c只能从两边向中间靠(在a之后)。细节条件就是去重处理(i,start,end三个索引的去重都要考虑)#include <vector>#include <algorithm>#include <math.h>using namespace std;// @lc code=startclass Solution {public: int threeSumClosest(vector<.原创 2021-12-11 00:00:25 · 259 阅读 · 0 评论 -
三数之和【leetcode 15】
简单一句话,先排序,然后固定第一个数a,再然后b、c只能从两边向中间靠(在a之后)。细节条件就是去重处理解答1、官方代码:#include <vector>#include <algorithm>using namespace std;class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { if (num.原创 2021-12-10 23:19:24 · 89 阅读 · 0 评论 -
平方数之和【leetcode 633】
解答双指针可以看成是在元素为 0~target 的有序数组中查找两个数,使得这两个数的平方和为 target,如果能找到,则返回 true,表示 target 是两个整数的平方和。本题和 167. Two Sum II - Input array is sorted 类似,只有一个明显区别:一个是和为 target,一个是平方和为 target。本题同样可以使用双指针得到两个数,使其平方和为 target。本题的关键是右指针的初始化,实现剪枝,从而降低时间复杂度。设右指针为 x,左指针固定为 0,.原创 2021-12-10 20:21:19 · 115 阅读 · 0 评论 -
两数之和 II - 输入有序数组【leetcode 167】
解答使用双指针,一个指针指向值较小的元素,一个指针指向值较大的元素。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。如果两个指针指向元素的和 sum == target,那么得到要求的结果;如果 sum > target,移动较大的元素,使 sum 变小一些;如果 sum < target,移动较小的元素,使 sum 变大一些。数组中的元素最多遍历一次,时间复杂度为 O(N)。只使用了两个额外变量,空间复杂度为 O(1)。#include <vector.原创 2021-12-10 19:49:09 · 445 阅读 · 0 评论