摘要:题目概述:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回每个滑动窗口中的最大值 解题思路:这道题的难点在于需要在维护一个滑动窗口的同时,维护这个窗口中的最大值。通过滑动窗口那一节的练
阅读全文
摘要:题目概述:给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列 解题思路:先进行前缀和处理,再暴力枚举每个子数组,并判断其和是否为k 时间复杂度:\(O(n^2)\) 代码: class Solution { publi
阅读全文
摘要:题目概述:给定一字符串s(只由字符0和1组成),返回其平衡子串的最长的长度。所谓平衡子串就是指在该字串中所有的0都在1之前,且0的数量和1的数量相等 解题思路:由于数据范围比较小,所以直接暴力枚举所有子串,并判断是否为平衡子串更新答案即可。 时间复杂度:\(O(n^4)\) 代码: class So
阅读全文
摘要:题目概述:给定字符串s,p,找到s字符串子串中所有p的异位词,返回该字串的起始位置。异位词:由相同字母组成。 解题思路:由于其给定了p,所以枚举s中和p长度相同的子串,并判断是否为p的异位词(将p和子串都进行排序处理,再使用equals判断)。需要注意的是java中的substring(i,j)方法
阅读全文
摘要:题目概述:给你一个下标从 0 开始的字符串数组 words 和两个整数:left 和 right 。 如果字符串以元音字母开头并以元音字母结尾,那么该字符串就是一个 元音字符串 ,其中元音字母是 'a'、'e'、'i'、'o'、'u' 。 返回 words[i] 是元音字符串的数目,其中 i 在闭区
阅读全文
摘要:题目概述:给你一个字符串数组 words ,找出并返回 length(words[i]) * length(words[j]) 的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回 0 。 解题思路1:暴力做法+小优化。直接两重循环枚举所有组合,再写一个函数判断两个字符串是否含有相
阅读全文
摘要:题目概述:给定一字符串,返回该字符串中出现次数大于等于2且长度为10的子串 解题思路:由于其给定了子串的长度,所以我们利用substring函数直接枚举即可 时间复杂度:\(O(n)\) 代码: class Solution { public List<String> findRepeatedDna
阅读全文
摘要:题目概述:给定一个字符串s,求该字符串中无重复字符的子串的最长长度 解题思路:用一个哈希表来记录每个字符最近出现的位置。指针i遍历s,并用另一个指针j从当前位置的下一个位置开始遍历,每次检查当前枚举的字符上一次出现的位置pos是否>=i,如果>=i,说明当前子串中出现重复字符,更新答案,指针i直接跳
阅读全文
摘要:题目概述:给定一些柱子的高度,问这些柱子能够接到多少雨水 解题思路:将每个位置都想象有一个木桶,接到雨水的量=木桶体积-柱子体积。木桶的高度由前后缀数组中的较小者决定 时间复杂度:\(O(n)\) 代码: class Solution { public int trap(int[] height)
阅读全文
摘要:题目概述:给定一数组nums,以及三元组的定义:i!=j,j!=k,k!=i,并且nums[i] + nums[j] + nums[k] = 0。返回该数组中所有的三元组,{1,0,-1},{-1,0,1}视为同一个三元组 解题思路:由于数据范围比较小,直接采用二重循环加二分的思路,找到符合的三元组
阅读全文
摘要:题目概述:给定一些柱子的高度,规定两根柱子之间所能围成的面积(以两者中较短的一根的高度作为矩形的高)。问这些柱子中所能围成的最大面积 解题思路1:很明显,水量=(j - i) * min(height[i],height[j]); 当j从后往前枚举有一个特性:当height[j] >= height
阅读全文
摘要:题目概述:给定一个包含0的数组nums,要求在原数组上进行操作,使得数组中所有的0都位于数组尾部,且数组中的非零元素顺序保持不变 解题思路:记录0的个数,当枚举到非零元素时,可以计算出它在答案数组中的位置:i - zeroCount。最后再用0覆盖数组尾部 代码: class Solution {
阅读全文
摘要:题目概述:给定一个无序数组,问这个数组的元素能够组成的连续数组的最长长度为多少。 解题思路:很明显,我们需要对该数组先进行排序处理。我一开始用的是双指针,第一个指针枚举起点,第二个指针枚举该起点能够到达的最右边的距离,WA了。因为该数组有重复元素。(其实只要使用set去个重,这种方法就能AC了,不过
阅读全文
摘要:题目概述:给定一字符串数组。规定由相同字母构成的字符串为同一组,问该字符串数组最终分为几组,返回分完组后的一个二维数组 解题思路:由题意可得:如果两个字符串属于同一组,那么它们必定是由相同字符构成,即对该字符串进行排序后,两个字符串应该是相同的。因此,我们只需对每个字符串先进行排序处理,用map集合
阅读全文
摘要:题目概述:给定一个数组和target,要求我们在数组中找到两个数,使这两个数之和为target,返回这两个数在数组中的下标 解题思路:由于数据范围较小,直接使用暴力做法。当然可以使用二分或哈希进行优化 代码: class Solution { public int[] twoSum(int[] nu
阅读全文