双指针
Saulty
这个作者很懒,什么都没留下…
展开
-
LeetCode 11. 盛最多水的容器
LeetCode 11. 盛最多水的容器题目题解代码题目题解从两端开始遍历容纳的水量=两个指针指向的数字中较小值∗指针之间的距离短板向内缩进,如果长板向内缩进只会不变或者减小相对于暴力枚举,贪心算法指,所有的消去状态都不会导致丢失面积最大值 。代码class Solution {public://最高与次高距离 int maxArea(vector<int>& height) { int l=0,r=height.size()-1;原创 2021-08-10 12:27:58 · 58 阅读 · 0 评论 -
LeetCode 986. 区间列表的交集
LeetCode 986. 区间列表的交集题目题解代码题目题解考虑清楚每组跳到下一个区间的条件是什么成为区间的start,end的条件是什么代码class Solution {public: vector<vector<int>> intervalIntersection(vector<vector<int>>& firstList, vector<vector<int>>& secondLi原创 2021-08-10 12:27:40 · 72 阅读 · 0 评论 -
LeetCode 844. 比较含退格的字符串
LeetCode 844. 比较含退格的字符串题目题解代码题目题解栈string 可以模拟栈的操作双指针从string尾数进行判断代码// class Solution {// public:// bool backspaceCompare(string S, string T) {// int i = S.length() - 1, j = T.length() - 1;// int skipS = 0, skipT = 0;//原创 2021-08-09 12:10:32 · 48 阅读 · 0 评论 -
LeetCode 82. 删除排序链表中的重复元素 II
LeetCode 82. 删除排序链表中的重复元素 II题目题解代码题目题解双指针,注意对待重复出现和未重复出现的元素,处理是不同的代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x),原创 2021-08-09 12:10:14 · 42 阅读 · 0 评论 -
LeetCode 75. 颜色分类
LeetCode 75. 颜色分类题目题解代码题目题解双指针,0往前放,2往后放代码class Solution {public: void sortColors(vector<int>& nums) { //sort(nums.begin(),nums.end()); int n=nums.size(); int p=0; int q=n-1; for(int i=0;i<=q;原创 2021-08-02 13:04:03 · 47 阅读 · 0 评论 -
350. 两个数组的交集 II
LeetCode 350. 两个数组的交集 II题目题解代码题目题解哈希表短的数组先进哈希表,键为数组元素,值为数组元素出现的次数,长的数组,每找到一个,相应值减一哈希表考虑用for (int num : nums1) { ++m[num];}遍历数组更为方便数组长短对于算法的影响if (nums1.size() > nums2.size()) {return intersect(nums2, nums1);}排序+双指针代码// class Solution {/原创 2021-07-20 21:49:14 · 121 阅读 · 0 评论 -
LeetCode 567. 字符串的排列
LeetCode 19. 删除链表的倒数第 N 个结点题目题解代码题目给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.nex原创 2021-07-09 13:13:11 · 65 阅读 · 0 评论 -
LeetCode 19. 删除链表的倒数第 N 个结点
LeetCode 19. 删除链表的倒数第 N 个结点题目题解代码题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 300 <= Node原创 2021-07-08 12:02:24 · 45 阅读 · 0 评论 -
LeetCode 876. 链表的中间结点
LeetCode 977. 有序数组的平方题目题解代码题目给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= nums.l原创 2021-07-08 10:31:44 · 59 阅读 · 0 评论 -
LeetCode 557. 反转字符串中的单词 III
LeetCode 557. 反转字符串中的单词 III题目题解代码题目给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:输入:“Let’s take LeetCode contest”输出:“s’teL ekat edoCteeL tsetnoc”提示:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。题解利用空格将字符串中的单词分离,存储到新数组中,遍历数组中单词,调用单词内部反转的函数,最后加入新的字符串中比较好的方法,原创 2021-07-07 10:49:37 · 50 阅读 · 0 评论 -
LeetCode 344. 反转字符串
LeetCode 344. 反转字符串题目题解代码题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h原创 2021-07-07 10:36:11 · 39 阅读 · 0 评论 -
LeetCode 167. 两数之和 II - 输入有序数组
LeetCode 167. 两数之和 II - 输入有序数组题目题解代码题目给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示原创 2021-07-06 12:35:06 · 56 阅读 · 0 评论 -
LeetCode 977. 有序数组的平方
LeetCode 977. 有序数组的平方题目题解代码题目给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= nums.l原创 2021-07-06 11:08:57 · 29 阅读 · 0 评论 -
LeetCode 189. 旋转数组
LeetCode 189. 旋转数组题目题解代码题目给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3原创 2021-07-06 11:08:07 · 57 阅读 · 0 评论 -
LeetCode 283. 移动零
LeetCode 283. 移动零题目题解代码题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。题解简单暴力遍历数组,遇到0,将往后的元素向前移动一位,最后一位为0双指针类似快排,以0为分界点指针i左边全为非零元素,指针j与指针i之间全为零代码class Solution {public:原创 2021-07-06 11:06:21 · 68 阅读 · 1 评论