自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李威威的博客

快乐生活每一天!

原创 「力扣」第 195 场周赛代码(前 2 题)

比赛时间:北京时间 2020 年 6 月 28 日早 10:30 再接再厉! 第 1 题:判断路径是否相交 Java 代码: import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java....

2020-06-28 16:32:56 164 6

原创 「力扣」第 29 场双周赛代码(前 3 题)

比赛时间:北京时间 2020 年 6 月 27 日晚 10:30 再接再厉! 第 1 题:https://leetcode-cn.com/problems/average-salary-excluding-the-minimum-and-maximum-salary/ Java 代码: publi...

2020-06-28 16:28:58 73 0

原创 「线段树」第 4 节:区间更新(单点更新)

区间更新(单点更新) 想一想更新的步骤,根据画图分析。从树的根开始更新,先把数据更新了,再更新 tree。set方法 的设计与实现,其实是程式化的,这个过程熟悉了以后写起来,就会比较自然。最后不要忘记 merge 一下,从叶子结点开始,父辈结点,祖辈结点,直到根结点都要更新。 Java 代码: p...

2020-06-26 04:39:56 58 0

原创 「线段树」第 3 节:创建线段树与区间查询

根据原始数组创建线段树 这一节的目标是:我们把员工的信息输入一棵线段树,让这棵线段树组织出领导架构。即已知 data 数组,要把 tree 数组构建出来。 分析递归结构,重点体会:二叉树每做一次分支都是「一分为二」进行的,因此线段树是一棵二叉树; 递归到底的时候,这个区间只有 111 个元素。 ...

2020-06-26 04:33:25 66 0

原创 「线段树」第 2 节:写出预处理数组的结构

由于「线段树」是平衡二叉树,因此可以使用数组表示 以前我们学习过「堆」,知道「堆」是一棵「完全二叉树」,因此「堆」可以用数组表示。基于此,我们很自然地想到可以用数组表示「线段树」; 完全二叉树的定义:除了最后一层以外,其余各层的结点数达到最大,并且最后一层所有的结点都连续地、集中地存储在最左边;...

2020-06-26 04:12:52 77 0

原创 「线段树」第 1 节:线段树是原始数组的一个预处理数组

线段树(segment tree)又称「区间树」,是一个高级数据结构,应用的对象是「数组」; 线段树是一种实现了高效的「区间查询」与「区间更新」的数据结构。 前置知识:理解「前缀和」数组 preSum[i] 表示 nums[0..i - 1] 里全部元素的和(一个数代表了原始数组的一个前缀区...

2020-06-26 03:49:52 58 0

原创 「树状数组」第 4 节: 相关例题

其实下面这两个问题本质上是一个问题。 例 1:《剑指 Offer 》第 51 题:逆序数的计算 剑指 Offer 51. 数组中的逆序对。 在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。 输入一个数组,求出这个数组中的逆序对的总数。 样例 输入:[1,2,3,...

2020-06-26 03:00:29 41 0

原创 「树状数组」第 3 节:理解 lowbit 操作

下面我们介绍一种很酷的操作,叫做 lowbit ,它可以高效地计算 2k2^k2k,即我们要证明: lowbit(i)=2k {\rm lowbit}(i) = 2^k lowbit(i)=2k 其中 kkk 是将 iii 表示成二进制以后,从右向左数,遇到 111 则停止时,数出的 000 的...

2020-06-26 02:53:59 42 0

原创 「树状数组」第 2 节:理解预处理数组 C

「树状数组」第 2 节:理解预处理数组 C 我们看看树状数组长什么样。 树状数组的样子 例 5 我们以一个有 8 个元素的数组 A 为例(如上图),在数组 A 之上建立一个数组 C,使得数组 C 的形成如上的一个多叉树形状,数组 C 就形成了一个树状数组的结构。以下是两点说明: 树状数组要建...

2020-06-26 02:37:41 61 0

原创 「树状数组」第 1 节:树状数组能解决的问题

关键词:位运算、前缀和的查询与更新。 第 1 节 树状数组能解决的问题 ![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9wbmcvMTM1NDE3Mi8xNTkzMT...

2020-06-26 02:10:47 47 0

原创 「力扣」第 787 题:K 站中转内最便宜的航班(深度优先遍历、广度优先遍历)

方法一:深度优先遍历(回溯算法) 说明: 航班没有重复,且不存在环路; 每个航班的价格范围是 [1, 10000]。 Java 代码: public class Solution { public int findCheapestPrice(int n, int[][] flight...

2020-06-15 14:13:04 142 0

原创 「力扣」第 193 场周赛前 3 题代码(照例不做第 4 题)

说明:第 4 题不做是因为超纲不会做,本人非科班,没有时间去研究第 4 题。 第 193 场周赛地址:https://leetcode-cn.com/contest/weekly-contest-193/ 第 1 题:一维数组的动态和 一句话题解:其实就是求前缀和,注意有 1 个位置的下标偏...

2020-06-14 13:45:02 162 2

原创 「力扣」第 380 题:常数时间插入、删除和获取随机元素(哈希表、动态数组)

Java 代码: import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class RandomizedSet { /** ...

2020-06-12 17:01:11 45 0

原创 「力扣」第 127 题:单词接龙(BFS)

Java 代码: import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.LinkedList; import java.util.List; impo...

2020-06-01 16:36:08 78 0

原创 「力扣」第 1465 题:切割后面积最大的蛋糕(区间和)

说明:标签是乱起的。 中文地址:https://leetcode-cn.com/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/ 英文地址:https://leetcode.com/pr...

2020-05-31 16:23:35 80 0

原创 「力扣」第 5409 题:检查一个字符串是否包含所有长度为 K 的二进制子串(滑动窗口、位运算、哈希表)

Java 代码: import java.util.HashSet; import java.util.Set; public class Solution { public boolean hasAllCodes(String s, int k) { int len ...

2020-05-31 00:01:19 164 0

原创 「力扣」第 973 题:最接近原点的 K 个点(优先队列)

「力扣」第 973 题:最接近原点的 K 个点(优先队列) 链接:https://leetcode-cn.com/problems/k-closest-points-to-origin/ Java 代码: import java.util.Arrays; import java.util.Pr...

2020-05-30 16:15:56 95 0

原创 「力扣」第 394 题:字符串解码(栈)

地址:https://leetcode-cn.com/problems/decode-string/ Java 代码: import java.util.ArrayDeque; import java.util.Deque; public class Solution { public...

2020-05-28 09:03:43 50 0

原创 「力扣」第 886 题:可能的二分法(图、DFS)

地址:https://leetcode-cn.com/problems/possible-bipartition/ Java 代码: import java.util.ArrayList; import java.util.List; public class Solution { p...

2020-05-28 08:44:55 68 0

原创 「力扣」第 785 题:判断二分图(DFS)

Java 代码: public class Solution { private boolean[] visited; private int[] colors; private int[][] graph; public boolean isBipartit...

2020-05-28 00:02:00 32 0

原创 「力扣」第 581 题:最短无序连续子数组(栈、单调栈)

方法一:暴力解法 要归纳出: 找到每个数左边第 1 个大于它的值; 找到每个数右边第 1 个小于它的值。 二者之差就是题目要找的「最短无序连续子数组」。 Java 代码: public class Solution { public int findUnsortedSubar...

2020-05-27 17:12:11 39 0

原创 LeetCode 第 190 场周赛(前三题)

依旧是第 4 题不做。 第 1 题:检查单词是否为句中其他单词的前缀 https://leetcode-cn.com/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/ Java 代码: public cla...

2020-05-25 08:09:39 70 0

原创 「力扣」第 152 题:乘积最大的子数组(动态规划)

思路 这个问题很像「力扣」第 53 题:最大子序和,只不过当前这个问题求的是乘积的最大值; 「连续」这个概念很重要,可以参考第 53 题的状态设计,将状态设计为:以 nums[i]结尾的连续子数组的最大值; 类似状态设计的问题还有「力扣」第 300 题:最长上升子序列,「子数组」、「子序列」问题...

2020-05-18 03:40:49 161 0

原创 「力扣」第 76 题:最小覆盖子串(滑动窗口例题)

可能可以参考的模板写法: public class Solution { public String minWindow(String s, String t) { // 起始的时候,都位于 0,同方向移动 int left = 0; in...

2020-05-17 05:54:05 71 0

原创 「力扣」第 997 题:找到小镇的法官(简单)

出度为 000 入度为 NNN 的就是法官。 Java 代码: public class Solution { public int findJudge(int N, int[][] trust) { int[] inDegree = new int[N];...

2020-05-11 01:58:32 86 0

原创 「力扣」第 410 题:分割数组的最大值(二分查找)

地址:https://leetcode-cn.com/problems/split-array-largest-sum/ 「非负整数数组」 是非常关键的信息。 考虑分割的两个极端:1、不分割;2、每个数成为 1 个子数组; 不分割,因为就一个子数组:子数组各自的和的最大值 = sum(nu...

2020-04-26 23:50:31 76 0

原创 「力扣」第 76 题:最小覆盖子串(滑动窗口)

只关心字符是否出现,并不关心字符出现的次数。 滑动窗口的定义:表示滑动窗口内部包含了 t 中的字符个数,这里借用了编辑距离的概念。 方法一:定义距离 Java 代码: public class Solution { public String minWindow(String s,...

2020-04-26 23:29:29 66 0

原创 「力扣」第 3 题:无重复字符的最长子串(滑动窗口、哈希表)

知识点: 转换成字符数组,是字符串问题常见的处理方法。这是因为 charAt 方法,每次访问的时候都会做边界判断,在我们求解的问题中,是不必要的; 「滑动窗口」的规则(这里要根据题目意思想出来):要求无重复字符的最长子串,那么需要关注的「状态」就是有重复元素; 右边界 right 滑动到刚刚好有...

2020-04-26 22:52:44 83 0

原创 「力扣」第 1095 题:山脉数组中查找目标值

大家好,这里是力扣视频题解。 今天要和大家分享的是第 1095 号问题:山脉数组中查找目标值。 这道题虽然是标注为 hard 的一道问题,但是思路并不难想到。并且,如果大家做过第 852 号问题:山脉数组的峰顶索引,相信解决这道问题就不在话下。 我们来看一下问题的描述: 1、首先这是一个:交互式问...

2020-04-25 21:33:55 120 0

原创 2020 年「力扣」春季赛前三题

Java 代码: public class Solution { public int minCount(int[] coins) { int res = 0; for (int coin : coins) { if ((coi...

2020-04-18 18:31:52 183 0

原创 「力扣」第 11 题:盛最多水的容器(双指针)

方法一:暴力解法 枚举所有的容器的两个内壁的下标,计算水的容量,选出最大值。 Java 代码: public class Solution { // 暴力解法,时间复杂度太高,我们应该使用指针对撞的方法 public int maxArea(int[] height) { ...

2020-04-18 05:28:46 69 0

原创 「力扣」第 238 题:除自身以外数组的乘积(动态规划)

地址:https://leetcode-cn.com/problems/product-of-array-except-self/ Java 代码: import java.util.Arrays; public class Solution { public int[] produc...

2020-04-16 05:28:47 74 0

原创 「力扣」第 56 题:合并区间(贪心算法)

分析: 首先画图理解题意; 经验:区间类的问题,一般而言是需要画图思考的。因为只有建立直观的感觉,才能更有效的去思考解决问题的方案。 还有需要画图思考的相关算法问题有(其实绝大部分都需要打草稿,大神除外): 和物理现象相关的:第 42 题:接雨水问题、第 11 题:盛最多水的容器、第 2...

2020-04-16 04:24:13 176 0

原创 「LeetCode」每日一题:Perform String Shifts Solution(字符串)

题目地址:Perform String Shifts Solution 这道题要基于「力扣」第 189 题的做法才可以做出。 方法一:直接模拟 Java 代码: public class Solution { // 参考第 189 题:https://leetcode-cn.com/p...

2020-04-14 22:21:46 154 0

原创 「力扣」第 525 题:连续数组(前缀和 + 哈希表,把 0 看成 -1)

地址:https://leetcode-cn.com/problems/contiguous-array/ Java 代码: import java.util.HashMap; import java.util.Map; public class Solution { public i...

2020-04-14 03:43:11 84 0

原创 「力扣」第 435 题:无重叠区间(贪心算法)

地址:https://leetcode-cn.com/problems/non-overlapping-intervals/ 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 贪心算法:最先结束的区间,一定是最优解的一部分 Java 代码: class Solution {...

2020-04-14 02:39:38 166 0

原创 「剑指Offer」第 51 题:数组中的逆序数(分治思想,草稿)

大家好,欢迎观看「力扣」视频题解。 今天我们来看「剑指Offer」第 51 题:数组中的逆序数。 这个问题半年之内,在「字节跳动」这家公司出现了 3 次。题目要我们输出一个数组中,「逆序对」的个数。那么什么是「逆序对」呢? (下面这段话说明逆序对的定义) 从一个数组里抽出的两个数字,如果前面的数...

2020-04-10 23:27:05 113 0

原创 「力扣」第 844 题:比较含退格的字符串(栈、双指针)

英文版 LeetCode 每日一题(2020 年 4 月 10 日) 地址:https://leetcode-cn.com/problems/backspace-string-compare/ 地址:https://leetcode.com/explore/featured/card/30-day...

2020-04-10 03:27:41 51 0

原创 「力扣」第 801 题:使序列递增的最小交换次数(动态规划)

Java 代码: import java.util.Arrays; public class Solution { public int minSwap(int[] A, int[] B) { int len = A.length; int[][] dp...

2020-04-09 02:54:12 85 0

原创 「力扣」第 546 题:移除盒子(很难的动态规划问题)

参考的题解都已经在代码中注明了。 看这篇题解得到思路: https://leetcode-cn.com/problems/remove-boxes/solution/guan-fang-fang-fa-2ji-yi-hua-sou-suo-dong-hua-tu-j/ Java 代码: publi...

2020-04-09 01:39:08 80 0

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