![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣
杉菜酱子
这个作者很懒,什么都没留下…
展开
-
回溯算法 详解
回溯算法 详解原创 2022-08-23 16:32:29 · 392 阅读 · 0 评论 -
实现并查集
实现并查集原创 2022-08-23 16:08:12 · 210 阅读 · 0 评论 -
华为机试题
汽水瓶有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空 汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满 的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以 换多少瓶汽水喝?输入描述:输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100).原创 2022-03-15 20:55:42 · 694 阅读 · 0 评论 -
【leetcode】42. 接雨水
接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9class Solution { // 1. 按行求 (会超时) .原创 2022-03-13 20:59:49 · 809 阅读 · 0 评论 -
删除一个链表第k个节点
删除一个链表第k个节点。import java.util.Scanner;public class KNode { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); ListNode head = new ListNode(sc.nextI原创 2022-03-02 20:41:09 · 444 阅读 · 0 评论 -
【leetcode】553. 最优除法
553. 最优除法给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如, [2,3,4] -> 2 / 3 / 4 。但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,才能得到最大的结果,并且返回相应的字符串格式的表达式。你的表达式不应该含有冗余的括号。示例:输入: [1000,100,10,2]输出: "1000/(100/10/2)"解释:1000/(100/10/2) = 1000/((100/10)/2) = 200但是,以下加粗的原创 2022-02-27 09:33:59 · 170 阅读 · 0 评论 -
【leetcode】917. 仅仅反转字母(左右双指针)
题目:917. 仅仅反转字母给你一个字符串 s ,根据下述规则反转字符串:所有非英文字母保留在原有位置。所有英文字母(小写或大写)位置反转。返回反转后的 s 。示例 1:输入:s = "ab-cd"输出:"dc-ba"示例 2:输入:s = "a-bC-dEf-ghIj"输出:"j-Ih-gfE-dCba"示例 3:输入:s = "Test1ng-Leet=code-Q!"输出:"Qedo1ct-eeLg=ntse-T!"左右双指针:如果头元素不是字母,i++,进原创 2022-02-23 11:29:25 · 233 阅读 · 0 评论 -
【leetcode】1994. 好子集的数目
题目:1994. 好子集的数目给你一个整数数组 nums 。如果 nums 的一个子集中,所有元素的乘积可以表示为一个或多个 互不相同的质数 的乘积,那么我们称它为 好子集 。比方说,如果 nums = [1, 2, 3, 4] :[2, 3] ,[1, 2, 3] 和 [1, 3] 是 好 子集,乘积分别为 6 = 2*3 ,6 = 2*3 和 3 = 3 。[1, 4] 和 [4] 不是 好 子集,因为乘积分别为 4 = 2*2 和 4 = 2*2 。请你返回 nums 中不同的 好 子集原创 2022-02-22 22:34:27 · 134 阅读 · 0 评论 -
【leetcode】838. 推多米诺(模拟)
题目:838. 推多米诺n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立。在开始时,同时把一些多米诺骨牌向左或向右推。每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。同样地,倒向右边的多米诺骨牌也会推动竖立在其右侧的相邻多米诺骨牌。如果一张垂直竖立的多米诺骨牌的两侧同时有多米诺骨牌倒下时,由于受力平衡, 该骨牌仍然保持不变。就这个问题而言,我们会认为一张正在倒下的多米诺骨牌不会对其它正在倒下或已经倒下的多米诺骨牌施加额外的力。给你一个字符串 dominoes 表示这一行多米诺骨牌的原创 2022-02-21 11:59:52 · 413 阅读 · 0 评论 -
【leetcode】717. 1比特与2比特字符(模拟)
题目:717. 1比特与2比特字符有两种特殊字符:第一种字符可以用一个比特 0 来表示第二种字符可以用两个比特(10 或 11)来表示、给定一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一位字符,则返回 true 。示例 1:输入: bits = [1, 0, 0]输出: true解释: 唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。示例 2:输入: bits = [1, 1, 1, 0]输出: false解释: 唯一的编原创 2022-02-20 14:10:59 · 9423 阅读 · 0 评论 -
【剑指 Offer】10- II. 青蛙跳台阶问题
题目:剑指 Offer 10- II. 青蛙跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1动态规划:class Solution { /** 1. 大数相乘,大数的排列组合等为什么要取模原创 2022-02-19 18:31:53 · 94 阅读 · 0 评论 -
【字节2019春招】万万没有想到之聪明的编辑
题目:我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello2. 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello3. 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和B原创 2022-02-19 17:58:04 · 131 阅读 · 0 评论 -
【leetcode】94. 二叉树的中序遍历
题目:94. 二叉树的中序遍历给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]递归:class Solution { public List<Integer原创 2022-02-19 12:56:02 · 250 阅读 · 0 评论 -
【leetcode】48. 旋转图像
题目:旋转图像给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]示例 2:输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[原创 2022-02-19 12:46:49 · 487 阅读 · 0 评论 -
【leetcode】969. 煎饼排序
题目:969. 煎饼排序给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序。一次煎饼翻转的执行过程如下:选择一个整数 k ,1 <= k <= arr.length反转子数组 arr[0...k-1](下标从 0 开始)例如,arr = [3,2,1,4] ,选择 k = 3 进行一次煎饼翻转,反转子数组 [3,2,1] ,得到 arr = [1,2,3,4] 。以数组形式返回能使 arr 有序的煎饼翻转操作所对应的 k 值序列。任何将数组排序且翻转次数在 10 *原创 2022-02-19 12:27:12 · 282 阅读 · 0 评论 -
【leetcode】5. 最长回文子串(中心扩散法)
5. 最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb" 提示:1 <= s.length <= 1000s 仅由数字和英文字母组成中心扩散法:class Solution { public String longestPalindrome(String s) { int len =原创 2022-02-18 18:27:24 · 183 阅读 · 0 评论 -
【leetcode】206. 反转链表
题目:206. 反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]迭代:class Solution { // 1. 迭代,双指针 public ListNode reverseList(ListNode head) { if(head == n原创 2022-02-18 18:21:11 · 119 阅读 · 0 评论 -
【leetcode】1791. 找出星型图的中心节点(简单模拟)
思路 :1791. 找出星型图的中心节点有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。示例 1:输入:edges = [[1,2],[2,3],[4,2]]输出:2解释:如上图所示,节点 2 与其他每个节点都相连原创 2022-02-18 13:27:08 · 150 阅读 · 0 评论 -
【leetcode】剑指 Offer II 020. 回文子字符串的个数(双指针)
题目 :剑指 Offer II 020. 回文子字符串的个数给定一个字符串 s ,请计算这个字符串中有多少个回文子字符串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:s = "abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:s = "aaa"输出:6解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa" 提示:1 <= s.length <= 1原创 2022-02-17 18:21:14 · 258 阅读 · 0 评论 -
【leetcode】47. 全排列 II(dfs+回溯、剪枝)
题目:47. 全排列 II给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2], [1,2,1], [2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]提示:1 <= nums.length <= 8-10 <= nums[i] <= 10回溯+原创 2022-02-17 17:01:36 · 281 阅读 · 0 评论 -
【leetcode】46. 全排列(dfs+回溯)
题目:46. 全排列给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]] 提示:1 <= nums.length <= 6-10 <=原创 2022-02-17 16:12:17 · 283 阅读 · 0 评论 -
【leetcode】688. 骑士在棋盘上的概率(动态规划)
题目:688. 骑士在棋盘上的概率在一个 n x n 的国际象棋棋盘上,一个骑士从单元格 (row, column) 开始,并尝试进行 k 次移动。行和列是 从 0 开始 的,所以左上单元格是 (0,0) ,右下单元格是 (n - 1, n - 1) 。象棋骑士有8种可能的走法,如下图所示。每次移动在基本方向上是两个单元格,然后在正交方向上是一个单元格。每次骑士要移动时,它都会随机从8种可能的移动中选择一种(即使棋子会离开棋盘),然后移动到那里。骑士继续移动,直到它走了 k 步或离开了棋盘。返回原创 2022-02-17 10:31:26 · 217 阅读 · 0 评论 -
【leetcode】面试题 10.05. 稀疏数组搜索
题目:面试题 10.05. 稀疏数组搜索稀疏数组搜索。有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置。示例1: 输入: words = ["at", "", "", "", "ball", "", "", "car", "", "","dad", "", ""], s = "ta" 输出:-1 说明: 不存在返回-1。示例2: 输入:words = ["at", "", "", "", "ball", "", "", "car", "", "","d原创 2022-02-16 17:41:15 · 307 阅读 · 0 评论 -
【leetcode】275. H 指数 II
题目:给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (n 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 n - h 篇论文每篇被引用次数 不超过 h 次。提示:如果 h 有多种可能的值,h 指数 是其中最大的那个。请你设计并实现对原创 2022-02-16 17:17:00 · 209 阅读 · 0 评论 -
【leetcode】153. 寻找旋转排序数组中的最小值
题目:153. 寻找旋转排序数组中的最小值已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。原创 2022-02-16 12:32:19 · 149 阅读 · 0 评论 -
【leetcode】17. 电话号码的字母组合
题目:17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]示例 3:输入:digits = “2”输出:[“a”,“b”,“c”]提示:0 <= dig原创 2022-02-16 12:04:20 · 178 阅读 · 0 评论 -
【leetcode】1719. 重构一棵树的方案数
题目:1719. 重构一棵树的方案数给你一个数组 pairs ,其中 pairs[i] = [xi, yi] ,并且满足:pairs 中没有重复元素xi < yi令 ways 为满足下面条件的有根树的方案数:树所包含的所有节点值都在 pairs 中。一个数对 [xi, yi] 出现在 pairs 中 当且仅当 xi 是 yi 的祖先或者 yi 是 xi 的祖先。注意:构造出来的树不一定是二叉树。两棵树被视为不同的方案当存在至少一个节点在两棵树中有不同的父节点。请你返回:如果 wa原创 2022-02-16 10:06:21 · 516 阅读 · 0 评论 -
【leetcode】287. 寻找重复数
题目:287. 寻找重复数给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。示例 1:输入:nums = [1,3,4,2,2]输出:2示例 2:输入:nums = [3,1,3,4,2]输出:3提示:1 <= n <= 105nums原创 2022-02-15 23:55:55 · 333 阅读 · 0 评论 -
【leetcode】34. 在排序数组中查找元素的第一个和最后一个位置
题目:34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6原创 2022-02-15 19:14:07 · 145 阅读 · 0 评论 -
【leetcode】74. 搜索二维矩阵
题目:74. 搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:true示例 2:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13输出:fals原创 2022-02-15 18:26:43 · 343 阅读 · 0 评论 -
【leetcode】81. 搜索旋转排序数组 II
题目:81. 搜索旋转排序数组 II已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4,原创 2022-02-15 17:59:38 · 321 阅读 · 0 评论 -
【leetcode】剑指 Offer 53 - I. 在排序数组中查找数字 I
题目:剑指 Offer 53 - I. 在排序数组中查找数字 I统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0提示:0 <= nums.length <= 105-109 <= nums[i] <= 109nums 是一个非递减数组-109 <= target <原创 2022-02-15 16:41:27 · 167 阅读 · 0 评论 -
【leetcode】33. 搜索旋转排序数组
题目:33. 搜索旋转排序数组整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你原创 2022-02-15 15:20:14 · 117 阅读 · 0 评论 -
【leetcode】剑指 Offer 11. 旋转数组的最小数字
题目:剑指 Offer 11. 旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为1。 示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0二分法:class Solutio原创 2022-02-15 12:47:03 · 115 阅读 · 0 评论 -
【leetcode】剑指 Offer 04. 二维数组中的查找
题目:剑指 Offer 04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23,原创 2022-02-15 12:18:20 · 203 阅读 · 0 评论 -
【leetcode】1380. 矩阵中的幸运数
题目:1380. 矩阵中的幸运数给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。幸运数是指矩阵中满足同时下列两个条件的元素:在同一行的所有元素中最小在同一列的所有元素中最大 示例 1:输入:matrix = [[3,7,8],[9,11,13],[15,16,17]]输出:[15]解释:15 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值。示例 2:输入:matrix = [[1,10,4,2],[9,3,8,7原创 2022-02-15 11:52:39 · 159 阅读 · 0 评论 -
【leetcode】1027. 最长等差数列(动态规划)
题目:1027. 最长等差数列给你一个整数数组 nums,返回 nums 中最长等差子序列的长度。回想一下,nums 的子序列是一个列表 nums[i1], nums[i2], ..., nums[ik] ,且 0 <= i1 < i2 < ... < ik <= nums.length - 1。并且如果 seq[i+1] - seq[i]( 0 <= i < seq.length - 1) 的值都相同,那么序列 seq 是等差的。示例 1:输入:nu原创 2022-02-15 00:13:36 · 477 阅读 · 1 评论 -
【leetcode】300. 最长递增子序列(动态规划、二分法)
题目:300. 最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:原创 2022-02-14 18:38:02 · 364 阅读 · 0 评论 -
【leetcode】面试题 17.08. 马戏团人塔
按照身高升序,相同身高的按照体重降序进行排序后,就变成了最长升序子序列(LIS)问题。class Solution { public int bestSeqAtIndex(int[] height, int[] weight) { int len = height.length; int[][]person = new int[len][2]; for(int i = 0; i < len;i++){ person[i]原创 2022-02-14 18:18:46 · 514 阅读 · 0 评论 -
【leetcode】374. 猜数字大小
题目 :374. 猜数字大小猜数字游戏的规则如下:每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):-1:我选出的数字比你猜的数字小 pick < num1:我选出的数字比你猜的数字大 pick > num0:我选出的数字和你猜的数字一样。恭喜!原创 2022-02-14 15:40:41 · 156 阅读 · 0 评论