自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

原创 [leetCode]395. 至少有 K 个重复字符的最长子串

题目https://leetcode-cn.com/problems/longest-substring-with-at-least-k-repeating-characters/滑动窗口题目要求最长子串,最长子串中字符的种类数在[1,26]的左闭右闭的范围内。遍历所有种类数,在符合每种种类数中的字符串中寻找最长子串。还需要维护窗口内每个字符的出现频次,以及窗口内频次小于k的字符数量less,如果less>0这当前字符串及其子串肯定不是最长的字符子串。class Solution {

2021-02-27 13:35:59 195

原创 [leetCode]1178. 猜字谜

题目https://leetcode-cn.com/problems/number-of-valid-words-for-each-puzzle/字典树class Solution { TrieNode root; public List<Integer> findNumOfValidWords(String[] words, String[] puzzles) { root = new TrieNode(); for (String

2021-02-26 12:53:54 195 2

原创 [leetCode]995. K 连续位的最小翻转次数

题目https://leetcode-cn.com/problems/minimum-number-of-k-consecutive-bit-flips/差分数组最简单的贪心思路就是从左往右遍历数组,如果当前位置A[i]为0 则需要翻转[i, i + K - 1]之间的元素,不断执行这个操作加入最终数组全为1则执行的翻转次数就是最少的。由上面的思路可以知道,如果当前位置A[i]=0则需要翻转,那么如果我们知道了当前位置的翻转次数是偶数并且A[i]为0的话我们就需要翻转一次数组,因此可以利用差分

2021-02-18 11:12:57 124

原创 [leetCode]566. 重塑矩阵

题目https://leetcode-cn.com/problems/reshape-the-matrix/模拟填充重塑数组的一行填充满后换一行继续填充class Solution { public int[][] matrixReshape(int[][] nums, int r, int c) { int rows = nums.length; int cols = nums[0].length; if (rows * cols !=

2021-02-17 09:51:53 111

原创 [leetCode]561. 数组拆分 I

题目https://leetcode-cn.com/problems/array-partition-i/贪心可以发现要使每一对数的最小值最大,那么这一对数越**“靠近”**越好,所以直接排序两对两对的取求和即可。由于已经排序了所以最小值就是每队的第一个数。class Solution { // 1 2 2 5 6 6 public int arrayPairSum(int[] nums) { Arrays.sort(nums); int sum

2021-02-16 10:31:58 121

原创 [leetCode]485. 最大连续1的个数

题目https://leetcode-cn.com/problems/max-consecutive-ones/滑动窗口class Solution { public int findMaxConsecutiveOnes(int[] nums) { int len = nums.length; int left = 0; int right = 0; int maxOneCnt = 0; while (rig

2021-02-15 08:33:47 127

原创 [leetCode]765. 情侣牵手

题目https://leetcode-cn.com/problems/couples-holding-hands/并查集阅读题目通过感觉可以知道是考察并查集,并查集并不难写,难得是题目得分析。通过举几个例子可以发现,最少得交换次数等于交换完成之后得连通分量个数减去交换之前的连通分量个数。class Solution { public int minSwapsCouples(int[] row) { int len = row.length; int N

2021-02-14 20:11:31 92

原创 [leetCode]448. 找到所有数组中消失的数字

题目https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array/解法将原数组当作哈希表,由于数组中的数字大小都在[1, n]内,数组的长度为n,所以遍历数组元素x,将nums[x - 1]加上n,如果数组中没有元素缺失的话数组每个位置元素的值都应该大于n,如果有缺失元素的话,缺失元素对应位置的元素值是不大于n的,这样就能找到数组中的缺失元素。class Solution { public List&

2021-02-13 09:19:41 92

原创 [leetCode]224. 基本计算器

题目https://leetcode-cn.com/problems/basic-calculator/栈class Solution { public int calculate(String s) { int operand = 0; // 操作数 int sign = 1; // 符号 int result = 0; // 计算结果 Stack<Integer> stack = new Stack<&

2021-02-10 13:30:32 129

原创 [leetCode]71. 简化路径

题目https://leetcode-cn.com/problems/simplify-path/栈以斜杠将字符串分隔,将分割后的字符串加入栈中,遇到 ".“和”“无需入栈遇到”…"则需要弹栈,弹栈需要注意不能溢出。最后通过StringBuilder重新构建字符串。class Solution { public String simplifyPath(String path) { String[] dirs = path.split("/"); Dequ

2021-02-09 10:12:16 99

原创 [leetCode]992. K 个不同整数的子数组

题目https://leetcode-cn.com/problems/subarrays-with-k-different-integers/滑动窗口此题的问法和很多滑动窗口的题目问法类似但还是有些不同,题目中问的是恰好有K个不同整数的区间数量,而一般滑动窗口问的问题是最多。。。。可以将问题转化为最多有K个整数的区间数量,这样的区间数量就是right - left,那么恰好有K个不同整数的区间数量就等于最多有K个整数的区间数量减去最多有K-1个整数的区间数量。class Solution {

2021-02-09 09:08:07 114

原创 [leetCode]978. 最长湍流子数组

题目https://leetcode-cn.com/problems/longest-turbulent-subarray/动态规化class Solution { public int maxTurbulenceSize(int[] arr) { int n = arr.length; if (n < 2) return n; int[] increased = new int[n]; int

2021-02-08 09:16:56 172

原创 [leetCode]5. 最长回文子串

题目https://leetcode-cn.com/problems/longest-palindromic-substring/动态规化状态表示:dp[i][j]: s[i…j]是否是回文子串状态计算:if i == j : dp[i][j] = trueelif i + 1 == j : dp[i][j] = s[i] == s[j]else : dp[i][j] = s[i] == s[j] && dp[i + 1][j - 1]class Solution {

2021-02-06 15:51:07 91

原创 [leetCode]1423. 可获得的最大点数

题目https://leetcode-cn.com/problems/maximum-points-you-can-obtain-from-cards/滑动窗空思路:要从两边取k个元素使之和最大,也就是取连续n-k个元素使之和最小,因此可以使用滑动窗口class Solution { public int maxScore(int[] cardPoints, int k) { int n = cardPoints.length; int windowS

2021-02-06 09:07:57 101

原创 [leetCode]1208. 尽可能使字符串相等

题目https://leetcode-cn.com/problems/get-equal-substrings-within-budget/思路字符串s与t每一个对应字符的开销为∣s[i]−s[t]∣| s[i] - s[t] |∣s[i]−s[t]∣因此可以构建一个diff数组其中diff[i]=∣s[i]−s[t]∣diff[i] = | s[i]-s[t] |diff[i]=∣s[i]−s[t]∣,这样问题就转化成了在diff数组中求区间和不超过maxCost的最长区间长度。滑动窗口

2021-02-05 12:28:22 184

原创 [leetCode]1248. 统计「优美子数组」

题目https://leetcode-cn.com/problems/count-number-of-nice-subarrays/滑动窗口使用双指针维护一个逻辑意义上的窗口区间为[left, right)。随着右指针的移动统计窗口内的奇数个数,如果奇数个数为k了,这时候再统计与当前窗口相关的子串的个数,可以这样统计:计算算窗口内最右侧奇数右边有几个偶数,用rightEvenCnt表示,也就是说有几种选择结尾的方式,由于可以什么偶数都不选所以一共有 rightEvenCnt + 1 种结尾方

2021-02-04 21:32:46 153

原创 [leetCode]336. 回文对

题目https://leetcode-cn.com/problems/palindrome-pairs/前缀树两个字符串 s1、s2 要构成回文串可以分成三种情况讨论:情况1: s1.length = s2.length在这种情况下s1翻转之后就是s2情况2:s1.length < s2.length, 例如 :s1 = “as”, s2 = “llsa” \ “sall”这种情况 s2能被分成 t1 + t2,其中t1是回文串, t2 是s1的翻转,也有可能t2是回文串,t1

2021-02-04 13:53:05 119

原创 [leetCode]643. 子数组最大平均数 I

题目https://leetcode-cn.com/problems/maximum-average-subarray-i/滑动窗口使用前缀和来快速计算一个区间内的和,从而可以计算平均数。class Solution { public double findMaxAverage(int[] nums, int k) { int n = nums.length; int[] sum = new int[n + 1]; for (int i

2021-02-04 08:10:16 156

原创 [leetCode]421. 数组中两个数的最大异或值

题目https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/哈希表class Solution { public int findMaximumXOR(int[] nums) { int maxNum = Arrays.stream(nums).max().getAsInt(); // 最大数字的位数 int L = Integer.toBinarySt

2021-02-03 21:57:05 143

原创 [leetCode]642. 设计搜索自动补全系统

题目前缀树class AutocompleteSystem { private StringBuilder haveInput; private List<Pair<String, Integer>> ans; public AutocompleteSystem(String[] sentences, int[] times) { haveInput = new StringBuilder(); ans = new

2021-02-03 20:02:57 222

原创 [leetCode]1004. 最大连续1的个数 III

题目https://leetcode-cn.com/problems/max-consecutive-ones-iii/滑动窗口解法与第424题相同class Solution { public int longestOnes(int[] A, int K) { int n = A.length; int maxCount = 0; int left = 0, right = 0; while (right < n)

2021-02-03 14:06:23 112

原创 [leetCode] 295. 数据流的中位数

题目https://leetcode-cn.com/problems/find-median-from-data-stream/双优先队列写法一class MedianFinder { private PriorityQueue<Integer> small; private PriorityQueue<Integer> large; private int smallSize, largeSize; /** initialize y

2021-02-03 13:18:09 77

原创 [leetCode]480. 滑动窗口中位数

题目https://leetcode-cn.com/problems/sliding-window-median/双优先队列加延迟删除由于要得到一个窗口内的中位数,可以使用两个优先队列small(大顶堆)、large(小顶堆),一个维护窗口内元数排序后较小的一半,一个维护较大的一半,如果元素个数为奇数那个中位数为small的堆顶元素,如果元素个数为偶数那么中位数就是small与large的堆顶元素除以2,此题的难点在于怎样保持两个堆的元素数量各占一半。一开始将元素加入small中,如果smal

2021-02-03 13:05:45 145

原创 【数据结构】前缀树

前缀树的定义前缀树是N叉树的特殊形式,用于存储字符串。前缀树的每个节点代表一个字符串/前缀。每个节点拥有几个子节点,子节点的值由该结点的值和通往该节点路径上所有的字符组成。特性: 节点的后代都与该节点相关的字符串具有相同的前缀。前缀树的表示底层使用输出存储子节点当需要存储的字符串中只有a-z的字符时可以使用数组存储子节点,通过 c - ‘a’ 来访问子节点。class TrieNode { // 改变这个值来适应不同的情况 public static final i

2021-02-02 15:41:06 307

原创 [leetCode]424. 替换后的最长重复字符

题目https://leetcode-cn.com/problems/longest-repeating-character-replacement/滑动窗扣使用双指针维护一个逻辑上的窗口,当 窗口的长度小于等于 窗口内出现最多的字符的数量 + k 时,窗口内的字符替换小于等于k次后能变为同样的字符。因此一开始不断移动右指针,维护窗口内最多的字符数量,如果不能满足right - left > maxCount + k说明替换k次无法使窗口内字符全部一样,这时候就需要移动左指针,下面代码使用

2021-02-02 11:42:26 106

原创 [leetCode]1438. 绝对差不超过限制的最长连续子数组

题目https://leetcode-cn.com/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/滑动窗口使用双指针维护窗口移动,使用TreeMap或者双端队列来维护窗口中得最大值和最小值TreeMapclass Solution { public int longestSubarray(int[] nums, int limit) { int n

2021-02-01 11:27:52 170

原创 [leetCode]888. 公平的糖果棒交换

题目哈希表推导出映射关系使用哈希表求解:假设A的总和为sumA, B的总和为sumB,交换元素x, y后A、B总和相等,即sumA−x+y=sumB−y+x,化简得:x=y+(sumA−sumB)/2sumA - x + y = sumB - y + x,化简得: x = y + (sumA - sumB) / 2sumA−x+y=sumB−y+x,化简得:x=y+(sumA−sumB)/2,将A中元素加入哈希表,遍历B中元素,如果符合上述映射关系,则找到了交换得一对元素。class Solut

2021-02-01 09:58:01 124

ListViewTest2.zip

在自定义Adapter中 - 重写getItemViewType()方法用来判断当前Item对象的类别 - 重写getViewTypeCount()返回item一共有几个类别 - 在geView方法中通过判断类别来填充不同的item布局并给控件设置值

2019-08-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除