- 博客(37)
- 收藏
- 关注

原创 剑指 Offer II 014. 字符串中的变位词(滑动窗口与双指针好例题)
剑指 Offer II 014. 字符串中的变位词给定两个字符串s1和s2,写一个函数来判断 s2 是否包含 s1的某个变位词。换句话说,第一个字符串的排列之一是第二个字符串的 子串 。示例 1:输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").示例 2:输入: s1= "ab" s2 = "eidboaoo"输出: False提示:1 <= s1.length, s2.lengt
2022-04-12 17:33:21
2356
1
原创 IDEA启动报错:Internal error. Please refer to http://jb.gg/ide/critical-startup-errors
IDEA启动报错:Internal error. Please refer to http://jb.gg/ide/critical-startup-errors
2022-05-29 17:33:30
865
原创 redis封装工具类(缓存穿透,缓存击穿(逻辑过期))Ⅰ
封装简单缓存穿透代码流程,逻辑过期解决缓存击穿,redis的setnx模拟互斥锁用于学习
2022-05-01 12:23:20
1334
2
原创 剑指 Offer II 064. 神奇的字典(前缀树+dfs)
设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于已构建的神奇字典中。实现 MagicDictionary 类:MagicDictionary() 初始化对象void buildDict(String[]dictionary) 使用字符串数组dictionary 设定该数据结构,dictionary 中的字符串互不相同bool search(String searchWord)
2022-04-28 20:53:24
641
原创 剑指 Offer II 058. 日程表(平衡二叉树,自定义bst二分搜索)
请实现一个 MyCalendar 类来存放你的日程安排。如果要添加的时间内没有其他安排,则可以存储这个新的日程安排。MyCalendar 有一个 book(int start, int end)方法。它意味着在 start 到 end 时间内增加一个日程安排,注意,这里的时间是半开区间,即 [start, end), 实数x 的范围为, start <= x < end。当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生重复预订。每次调用 MyCalendar.b
2022-04-27 17:59:08
347
原创 剑指 Offer II 057. 值和下标之差都在给定的范围内(桶排序)
给你一个整数数组 nums 和两个整数k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 。如果存在则返回 true,不存在返回 false。示例1:输入:nums = [1,2,3,1], k = 3, t = 0输出:true示例 2:输入:nums = [1,0,1,1], k = 1, t = 2输出:true示例 3:输入:nums = [1,5,
2022-04-27 17:23:42
227
原创 剑指 Offer II 043. 往完全二叉树添加节点(队列+层序遍历)
完全二叉树是每一层(除最后一层外)都是完全填充(即,节点数达到最大,第 n 层有 2n-1个节点)的,并且所有的节点都尽可能地集中在左侧。设计一个用完全二叉树初始化的数据结构CBTInserter,它支持以下几种操作:CBTInserter(TreeNode root)使用根节点为root的给定树初始化该数据结构;CBTInserter.insert(int v) 向树中插入一个新节点,节点类型为 TreeNode,值为 v 。使树保持完全二叉树的状态,并返回插入的新节点的父节点的值;
2022-04-21 14:22:20
218
原创 剑指 Offer II 040. 矩阵中最大的矩形(单调栈)
给定一个由0 和 1组成的矩阵 matrix,找出只包含 1 的最大矩形,并返回其面积。注意:此题 matrix输入格式为一维 01 字符串数组。示例 1:输入:matrix = ["10100","10111","11111","10010"]输出:6解释:最大矩形如上图所示。示例 2:输入:matrix = []输出:0示例 3:输入:matrix = ["0"]输出:0示例 4:输入:matrix = ["1"]输出:1示例 5:输入:matrix =
2022-04-21 14:13:31
495
原创 剑指 Offer II 039. 直方图最大矩形面积(单调栈)<必看>
给定非负整数数组 heights,数组中的数字用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。示例 1:输入:heights = [2,1,5,6,2,3]输出:10解释:最大的矩形为图中红色区域,面积为 10示例2:输入: heights = [2,4]输出: 4提示:1 <= heights.length <=1050 <= heights[i] <= 104来源:力扣(LeetCode)
2022-04-20 21:38:15
739
原创 剑指 Offer II 037. 小行星碰撞(栈)
剑指 Offer II 037. 小行星碰撞(栈)给定一个整数数组 asteroids,表示在同一行的小行星。对于数组中的每一个元素,其绝对值表示小行星的大小,正负表示小行星的移动方向(正表示向右移动,负表示向左移动)。每一颗小行星以相同的速度移动。找出碰撞后剩下的所有小行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。示例 1:输入:asteroids = [5,10,-5]输出:[5,10]
2022-04-19 19:19:42
323
原创 剑指 Offer II 038. 每日温度(单调栈)
剑指 Offer II 038. 每日温度(单调栈)请根据每日 气温 列表 temperatures,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用0 来代替。示例 1:输入: temperatures = [73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,1,0,0]示例 2:输入: temperatures = [30,40,50,60]输出:[1,1,1,0]示
2022-04-19 18:41:40
754
原创 剑指 Offer II 036. 后缀表达式(栈)
剑指 Offer II 036. 后缀表达式(栈)根据 逆波兰表示法,求该后缀表达式的计算结果。有效的算符包括+、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例2:输入:token
2022-04-19 17:56:49
1184
原创 剑指 Offer II 017. 含有所有字符的最短字符串(双指针)
剑指 Offer II 017. 含有所有字符的最短字符串(双指针)执行用时 2ms。给定两个字符串 s 和t 。返回 s 中包含t的所有字符的最短子字符串。如果 s 中不存在符合条件的子字符串,则返回空字符串 "" 。如果 s 中存在多个符合条件的子字符串,返回任意一个。注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。示例 1:输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC" 解释:最短子
2022-04-13 23:08:30
835
原创 剑指 Offer II 013. 二维子矩阵的和(前缀和)
剑指 Offer II 013. 二维子矩阵的和(前缀和)给定一个二维矩阵 matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1,col1) ,右下角为 (row2,col2) 。实现 NumMatrix 类:NumMatrix(int[][] matrix)给定整数矩阵 matrix 进行初始化int sumRegion(int row1, int col1, int row2, int col2)返回左上角 (row1,col1)、右下
2022-04-11 23:43:14
709
原创 剑指 Offer II 008. 和大于等于 target 的最短子数组(滑动窗口)
剑指 Offer II 008. 和大于等于 target 的最短子数组(滑动窗口)给定一个含有n个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组[4,3]是该条件下的长度最小的子数组。
2022-04-11 00:11:33
363
原创 剑指 Offer II 005. 单词长度的最大乘积(位运算)
剑指 Offer II 005. 单词长度的最大乘积(位运算)给定一个字符串数组words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值。假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串,返回 0。示例1:输入: words = ["abcw","baz","foo","bar","fxyz","abcdef"]输出: 16 解释: 这两个单词为 "abcw", "fxyz"。它们不包含相同字符,且长度的乘积
2022-04-09 16:27:30
255
原创 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数
剑指 Offer II 003. 前 n 个数字二进制中 1 的个数给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。示例 1:输入: n = 2输出: [0,1,1]解释: 0 --> 01 --> 12 --> 10示例2:输入: n = 5输出: [0,1,1,2,1,2]解释:0 --> 01 --> 12 --> 103 --> 114 --> 1005 --> 101
2022-04-08 22:36:57
91
原创 剑指 Offer II 002. 二进制加法(模拟)
剑指 Offer II 002给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “10”输出: “101”示例 2:输入: a = “1010”, b = “1011”输出: “10101”提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 10^4字符串如果不是 “0”,就
2022-04-08 22:16:47
164
原创 剑指 Offer II 001. 整数除法
剑指 Offer II 001. 整数除法题目给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*’、除号 ‘/’ 以及求余符号 ‘%’ 。注意:整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335)= -2 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231−1]。本题中,如果除法结果溢出,则返回 231 − 1示例 1:输入:a = 15,
2022-04-08 22:03:45
445
原创 剑指 Offer 51. 数组中的逆序对(归并排序)
剑指 Offer 51. 数组中的逆序对(归并排序)在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000利用归并排序解析
2022-04-05 19:52:34
221
原创 剑指 Offer 38. 字符串的排列(回溯法)
剑指 Offer 38. 字符串的排列(回溯法)输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]限制:1 <= s 的长度 <= 8
2022-04-03 21:08:03
473
原创 剑指 Offer 59 - I. 滑动窗口的最大值
剑指 Offer 59 - I. 滑动窗口的最大值给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: 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 3 1 [3 -1 -3] 5 3 1 3 [-1 -3 5] 3 6 7 5 1 3
2022-04-02 21:29:34
417
原创 顺时针打印矩阵(模拟)
顺时针打印矩阵(模拟)输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 100 0 <= matri
2022-03-31 17:14:44
94
原创 剑指 Offer 57 - II. 和为s的连续正数序列(滑动窗口)
剑指 Offer 57 - II. 和为s的连续正数序列(滑动窗口)输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9 输出:[[2,3,4],[4,5]]示例 2:输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]]限制: 1 <= target <= 10^5
2022-03-30 21:38:02
142
原创 剑指 Offer 66. 构建乘积数组
剑指 Offer 66. 构建乘积数组给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i> 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。> 示例:> 输入: [1,2,3,4,5] > 输出: [120,60,40,30,24]> 提示: 所有元素乘积之和不会溢出 32 位整数> a.length <= 100000
2022-03-29 23:14:17
210
原创 数组中数字出现的次数Ⅰ,Ⅱ(位运算)
数组中数字出现的次数一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]数组中数字出现的次数 II在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4
2022-03-28 20:59:17
826
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人