LeetCode
滘
小白
展开
-
LeetCode 统计「优美子数组」 前缀和 Java
相关题目:和为K的子数组k倍区间题目描述给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。示例 2:输入:nums = [2,4,6], k = 1输出:0解释:数列中不包含任何奇数,所以不存在优美子数组。原创 2020-09-12 10:11:40 · 171 阅读 · 0 评论 -
LeetCode 和为K的子数组 前缀和+Hash java
题目描述:给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subarray-sum-equa原创 2020-09-12 09:12:29 · 149 阅读 · 0 评论 -
LeetCode 字符串的排列 Java 滑动窗口 双指针
题目描述给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").示例2:输入: s1= "ab" s2 = "eidboaoo"输出: False相似题目无重复最长子串找到字符串中所有字母异位词最小覆盖子串思路这题我觉得就是 “ 找到字符串中所有字母异位词”和“无原创 2020-08-22 10:27:25 · 181 阅读 · 0 评论 -
LeetCode 无重复最长子串 Java 双指针
题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,原创 2020-08-21 20:47:08 · 217 阅读 · 2 评论 -
LeetCode 找到字符串中所有字母异位词 Java 双指针 滑动窗口
给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例 1:输入:s: "cbaebabacd" p: "abc"输出:[0, 6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的字母异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的原创 2020-08-21 20:31:19 · 160 阅读 · 0 评论 -
LeetCode 最小覆盖子串 Java 双指针 滑动窗口
题目描述:给你一个字符串 S、一个字符串 T 。请你设计一种算法,可以在 O(n) 的时间复杂度内,从字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入:S = "ADOBECODEBANC", T = "ABC"输出:"BANC"提示:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-window-sub原创 2020-08-21 19:57:51 · 169 阅读 · 2 评论 -
LeetCode 四数之和 Java 双指针
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/4sum相似题目三数之和最接近的三数之和思路这题只是三数之和稍加改一下三数之和是由i的位置来确定a,然后left从i+1开始来确定b原创 2020-08-21 16:19:43 · 165 阅读 · 0 评论 -
LeetCode 最接近的三数之和 Java 双指针
题目描述:给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3 <= nums[i] <= 10^3-10^4原创 2020-08-21 15:28:22 · 136 阅读 · 0 评论 -
LeetCode 三数之和 Java 双指针
题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum思路:原创 2020-08-21 14:35:44 · 136 阅读 · 0 评论 -
LeetCode 移动零 双指针 Java
思路:这题跟移除简单元素那题差不多,只不过要把前面移除掉的零,放到最后面class Solution { public void moveZeroes(int[] nums) { int length=nums.length; int l=0; int r=0; int count=0; //统计零的个数 while(r<length){ if(nums[r]=.原创 2020-08-21 09:02:03 · 113 阅读 · 0 评论 -
LeetCode 移除简单元素 Java双指针
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。思路双指针,不让开辟新的空间只能在原数组上修改,1.按照双指针的套路定义left和right,两个指针同时走遇到目标值,此时left停下,right++,直nums[right]!=target;2.此时nums[rigth]!=targe原创 2020-08-21 08:56:03 · 109 阅读 · 0 评论 -
leetcode 划分字母区间 Java 双指针 贪心
输入:S = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。原创 2020-08-21 07:49:35 · 115 阅读 · 0 评论 -
字符串转换整数 (atoi) JAVA
请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不是一个有效整数字原创 2020-08-21 07:09:21 · 879 阅读 · 0 评论 -
最长回文子串 Java 动态规划 有图
题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解题思路:DP怎么DP呢,它要求啥我们就设啥一开始我是想着一维数组dp,dp[i]表示前i个字符的最长回文子串,注意这里的子串不是必须连续的,然后f发现一维的判断不了。最起码需要两个指针然后转二维;dp[i][j] 表示i~j位置的最长回文子串,还是老样原创 2020-07-29 14:04:20 · 330 阅读 · 0 评论 -
LeetCode 最长公共子序列 Java 动态规划 有图解
题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 1:输入:text1 = "abcde", text原创 2020-07-29 12:16:55 · 179 阅读 · 0 评论