![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode-双指针
KobeSacre
这个作者很懒,什么都没留下…
展开
-
和为s的连续正数序列
leetcode原创 2022-10-27 11:22:34 · 98 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
调整数组顺序使奇数位于偶数前面原创 2022-09-07 14:19:27 · 103 阅读 · 0 评论 -
排序的循环链表
排序的循环链表题目:给定循环单调非递减列表中的一个点,写一个函数向这个列表中插入一个新元素 insertVal ,使这个列表仍然是循环升序的。给定的可以是这个列表中任意一个顶点的指针,并不一定是这个列表中最小元素的指针。如果有多个满足条件的插入位置,可以选择任意一个位置插入新的值,插入后整个列表仍然保持有序。如果列表为空(给定的节点是 null),需要创建一个循环有序列表并返回这个节点。否则。请返回原先给定的节点。 示例 1:输入:head = [3,4,1], insertVa原创 2022-04-08 15:11:17 · 273 阅读 · 0 评论 -
最多删除一个字符得到回文
最多删除一个字符得到回文题目:给定一个非空字符串 s,请判断如果 最多 从字符串中删除一个字符能否得到一个回文字符串。示例 1:输入: s = "aba"输出: true示例 2:输入: s = "abca"输出: true解释: 可以删除 "c" 字符 或者 "b" 字符示例 3:输入: s = "abc"输出: falseclass Solution { public boolean validPalindrome(String s) { ch原创 2022-02-14 16:12:48 · 464 阅读 · 0 评论 -
字符串中的所有变位词
字符串中的所有变位词题目:给定两个字符串 s 和 p,找到 s 中所有 p 的 变位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。变位词 指字母相同,但排列不同的字符串。示例 1:输入: s = "cbaebabacd", p = "abc"输出: [0,6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的变位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的变位词。 示例 2:输入: s = "abab", p = "ab"输出原创 2022-02-13 16:06:56 · 257 阅读 · 0 评论 -
字符串中的变位词
字符串中的变位词题目:给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的某个变位词。换句话说,第一个字符串的排列之一是第二个字符串的 子串 。示例 1:输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").示例 2:输入: s1= "ab" s2 = "eidboaoo"输出: False滑动窗口解法:class Solution { public boolean check原创 2022-02-13 15:42:46 · 324 阅读 · 0 评论 -
奇偶分割数组
奇偶分割数组题目:描述分割一个整数数组,使得奇数在前偶数在后。答案不唯一。你只需要给出一个合法的答案。样例样例1:输入: [1,2,3,4]输出: [1,3,2,4]样例2:输入: [1,4,2,3,5,6]输出: [1,3,5,4,2,6]解题思路:有一种直观的思路是生成一个临时数组然后分别将奇偶数放进临时数组,另一种思路是运用快速选择将奇偶数分割开来public class Solution { /* * @param nums: an array o原创 2021-07-20 16:43:33 · 143 阅读 · 0 评论 -
数组划分
数组划分题目:描述给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:所有小于k的元素移到左边所有大于等于k的元素移到右边返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。你应该真正的划分数组 nums,而不仅仅只是计算比 k 小的整数数,如果数组 nums 中的所有元素都比 k 小,则返回 nums.length。0 <= nums.length <= 20000<=nums.length<原创 2021-07-20 14:25:38 · 410 阅读 · 0 评论 -
颜色分类 II
颜色分类 II描述给定一个有n个对象(包括k种不同的颜色,并按照1到k进行编号)的数组,将对象进行分类使相同颜色的对象相邻,并按照1,2,...k的顺序进行排序。不能使用代码库中的排序函数来解决这个问题k <= n样例样例1输入: [3,2,2,1,4] 4输出: [1,2,2,3,4]样例2输入: [2,1,1,2,2] 2输出: [1,1,2,2,2]public class Solution { /** * @param colors:原创 2021-07-16 15:32:16 · 108 阅读 · 0 评论 -
交错正负数
交错正负数题目:描述给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。不需要保持正整数或者负整数原来的顺序。样例样例 1输入 : [-1, -2, -3, 4, 5, 6]输出 : [-1, 5, -2, 4, -3, 6]解释 : 或者任何满足条件的答案 解题思路:先判断正负数哪个出现的次数更多,然后将出现次数多的放在数组左边,最后用双指针将首尾进行交换即可public class Solution { /* * @param A: An in原创 2021-07-15 16:56:45 · 117 阅读 · 0 评论 -
字符大小写排序
字符大小写排序题目:描述给定一个只包含字母的字符串 chars,按照先小写字母后大写字母的顺序进行排序。对于不同的语言,chars将以不用的形式给出,例如对于字符串 "abc" ,将以下面的形式给出Java: char[] chars = {'a', 'b', 'c'};Python:chars = ['a', 'b', 'c']C++:string chars = "abc";你需要实现原地算法解决这个问题。字母不一定要保持在原始字符串中的相对位置。样例样例 1:输入:ch原创 2021-07-15 15:58:06 · 838 阅读 · 0 评论 -
按奇偶排序数组
按奇偶排序数组题目:给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。解题思路:使用两个变量 i, j 遍历数组进行比较,当两数 % 2后分别是(1, 0)时说明与要求相反,此时应该将两数交换然后 i++, j—; (1, 1)时则 j 是符合要求的此时只需要 j–;原创 2021-07-15 14:25:11 · 115 阅读 · 0 评论 -
无序数组K小元素
无序数组K小元素题目:描述找到一个无序数组中第K小的数样例样例 1:输入: [3, 4, 1, 2, 5], k = 3输出: 3样例 2:输入: [1, 1, 1], k = 2输出: 1解题思路:和数组中的第K个最大元素类似public class Solution { /** * @param k: An integer * @param nums: An integer array * @return: kth smallest e原创 2021-07-15 11:21:27 · 208 阅读 · 0 评论 -
四数之和
四数之和题目:描述给一个包含n个数的整数数组S,在S中找到所有使得和为给定整数target的四元组(a, b, c, d)。四元组(a, b, c, d)中,需要满足a \leq b \leq c \leq da≤b≤c≤d,答案中不可以包含重复的四元组。样例样例 1:输入:numbers = [2,7,11,15]target = 3输出:[]解释:2 + 7 + 11 + 15 != 3,不存在满足条件的四元组。样例 2:输入:numbers = [1,0,-1,0原创 2021-07-14 17:59:54 · 69 阅读 · 0 评论 -
两数和 - 差等于目标值
两数和 - 差等于目标值题目:描述给定一个排序后的整数数组,找到两个数的 差 等于目标值。你需要返回一个包含两个数字的列表[num1, num2], 使得num1与num2的差为target,同时num1必须小于num2。保证只有一个答案。注意:要求用O(1)空间复杂度完成。样例例1:输入: nums = [2, 7, 15, 24], target = 5 输出: [2, 7] 解释:(7 - 2 = 5)例2:输入: nums = [1, 1], target = 0原创 2021-07-13 22:47:17 · 187 阅读 · 0 评论 -
最接近的三数之和
最接近的三数之和题目:描述给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。只需要返回三元组之和,无需返回三元组本身样例样例 1:输入:numbers = [2,7,11,15]target = 3输出:20解释:2+7+11=20样例 2:输入:numbers = [-1,2,1,-4]target = 1输出:2public class Solution { /** * @para原创 2021-07-13 16:43:39 · 61 阅读 · 0 评论 -
两数和的最接近值
两数和的最接近值题目:描述给定整数数组num,从中找到两个数字使得他们和最接近target,返回两数和与 target 的差的 绝对值。样例样例1输入: nums = [-1, 2, 1, -4] 并且 target = 4输出: 1解释:最小的差距是1,(4 - (2 + 1) = 1).样例2输入: nums = [-1, -1, -1, -4] 并且 target = 4输出: 6解释:最小的差距是6,(4 - (- 1 - 1) = 6).public class原创 2021-07-13 14:59:26 · 639 阅读 · 0 评论 -
两数之和 II
两数之和 II题目:描述给一组整数,问能找出多少对整数,他们的和大于一个给定的目标值。请返回答案。样例样例 1:输入: [2, 7, 11, 15], target = 24输出: 1解释: 11 + 15 是唯一的一对样例 2:输入: [1, 1, 1, 1], target = 1输出: 6public class Solution { /** * @param nums: an array of integer * @param target:原创 2021-07-13 14:46:31 · 98 阅读 · 0 评论 -
两数和-小于或等于目标值
两数和-小于或等于目标值题目:描述给定一个整数数组,找出这个数组中有多少对的和是小于或等于目标值。返回对数。样例例1:输入: nums = [2, 7, 11, 15], target = 24. 输出: 5. 解释:2 + 7 < 242 + 11 < 242 + 15 < 247 + 11 < 247 + 15 < 24例2:输入: nums = [1], target = 1. 输出: 0. public class Solutio原创 2021-07-13 14:41:01 · 499 阅读 · 0 评论 -
三角形计数
三角形计数题目:描述给定一个整数数组,在该数组中,寻找三个数,分别代表三角形三条边的长度,问,可以寻找到多少组这样的三个数来组成三角形?样例样例 1:输入: [3, 4, 6, 7]输出: 3解释:可以组成的是 (3, 4, 6), (3, 6, 7), (4, 6, 7)样例 2:输入: [4, 4, 4, 4]输出: 4解释:任何三个数都可以构成三角形所以答案为 C(3, 4) = 4解题思路:先将数组排序,然后遍历数组原创 2021-07-11 00:35:49 · 545 阅读 · 0 评论 -
两数之和 - 不同组成
两数之和 - 不同组成题目:描述给一整数数组, 找到数组中有多少组 不同的元素对 有相同的和, 且和为给出的 target 值, 返回对数.样例例1:输入: nums = [1,1,2,45,46,46], target = 47 输出: 2解释:1 + 46 = 472 + 45 = 47例2:输入: nums = [1,1], target = 2 输出: 1解释:1 + 1 = 2解题思路:和三数之和类似public class Solution { /原创 2021-07-10 23:44:38 · 77 阅读 · 0 评论 -
两数和 II-输入已排序的数组
两数和 II-输入已排序的数组题目:描述给定一个已经 按升序排列 的数组,找到两个数使他们加起来的和等于特定数。函数应该返回这两个数的下标,index1必须小于index2。注意返回的值不是 0-based。你可以假设每个输入刚好只有一个答案样例例1:输入: nums = [2, 7, 11, 15], target = 9 输出: [1, 2]例2:输入: nums = [2,3], target = 5输出: [1, 2]public class Solution {原创 2021-07-10 23:00:50 · 68 阅读 · 0 评论 -
有效回文串
有效回文串题目:描述给定一个字符串,判断其是否为一个回文串。只考虑字母和数字,忽略大小写。你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。在这个题目中,我们将空字符串判定为有效回文。样例样例 1:输入: "A man, a plan, a canal: Panama"输出: true解释: "amanaplanacanalpanama"样例 2:输入: "race a car"输出: false解释: "raceacar"public cl原创 2021-07-09 15:44:54 · 67 阅读 · 0 评论 -
去除重复元素
去除重复元素题目:描述给一个整数数组,去除重复的元素。你应该做这些事1.在原数组上操作2.将去除重复之后的元素放在数组的开头3.返回去除重复元素之后的元素个数不需要保持原数组的顺序样例例1:输入:nums = [1,3,1,4,4,2]输出:[1,3,4,2,?,?]4解释:1. 将重复的整数移动到 nums 的尾部 => nums = [1,3,4,2,?,?].2. 返回 nums 中唯一整数的数量 => 4.事实上我们并不关心你把什么放在了原创 2021-07-09 11:19:46 · 380 阅读 · 0 评论 -
滑动窗口内数的和
滑动窗口内数的和题目:描述给你一个大小为n的整型数组和一个大小为k的滑动窗口,将滑动窗口从头移到尾,输出从开始到结束每一个时刻滑动窗口内的数的和。样例样例 1输入:array = [1,2,7,8,5], k = 3输出:[10,17,20]解析:1 + 2 + 7 = 102 + 7 + 8 = 177 + 8 + 5 = 20public class Solution { /** * @param nums: a list of integers.原创 2021-07-09 09:19:49 · 349 阅读 · 0 评论 -
合并两个有序数组
合并两个有序数组题目:给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出:[1,2,2...原创 2020-10-14 14:33:50 · 191 阅读 · 0 评论 -
找到字符串中所有字母异位词
找到字符串中所有字母异位词题目:给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例 1:输入:s: “cbaebabacd” p: “abc”输出:[0, 6]解释:起始索引等于 0 的子串是 “cba”, 它是 “abc” 的字母异位词。起始索引等于 6 的子串是 “b原创 2021-06-29 21:40:47 · 96 阅读 · 2 评论 -
滑动窗口最大值
滑动窗口最大值题目:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7原创 2021-06-28 18:29:50 · 71 阅读 · 0 评论 -
最小覆盖子串
最小覆盖子串题目:给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。示例 1:输入:s = “ADOBECODEBANC”, t = “ABC”输出:“BANC”示例 2:输入:s = “a”, t = “a”输出:“a”解题思路:记录字符串 t 的字符出现次数,使用滑动窗口来不断统计字符串 s 的字符出现次数,当滑动窗口范围内的子串字符出现次数覆盖了t以后不断缩小滑动窗口范围来找到最小覆盖原创 2021-06-01 15:27:52 · 89 阅读 · 0 评论 -
接雨水
接雨水题目:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。解题思路1: 运用动态规划分别记录左右两边的最大高度,然后依次计算即可class Solution { public int trap(int[] height) { if(height.length == 0)原创 2021-03-19 11:43:38 · 95 阅读 · 0 评论 -
爱生气的书店老板
爱生气的书店老板题目:今天,书店老板有一家店打算试营业 customers.length 分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X 分钟不生气,但却只能使用一次。请你返回这一天营业原创 2021-02-23 11:09:41 · 148 阅读 · 0 评论 -
最大连续1的个数 III
最大连续1的个数 III题目:给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。返回仅包含 1 的最长(连续)子数组的长度。示例 1:输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2输出:6解释:[1,1,1,0,0,1,1,1,1,1,1]粗体数字从 0 翻转到 1,最长的子数组长度为 6。示例 2:输入:A = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3输出:10解原创 2021-02-19 10:39:47 · 223 阅读 · 1 评论