- 博客(155)
- 收藏
- 关注
原创 小行星碰撞
小行星碰撞 给定一个整数数组 asteroids,表示在同一行的小行星。 对于数组中的每一个元素,其绝对值表示小行星的大小,正负表示小行星的移动方向(正表示向右移动,负表示向左移动)。每一颗小行星以相同的速度移动。 找出碰撞后剩下的所有小行星。碰撞规则:两个小行星相互碰撞,较小的小行星会爆炸。如果两颗小行星大小相同,则两颗小行星都会爆炸。两颗移动方向相同的小行星,永远不会发生碰撞。 示例 1: ...
2024-06-28 19:46:26
446
原创 重复的子字符串
重复的子字符串 给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s = "abab"输出: true解释: 可由子串 "ab" 重复两次构成。 示例 2: 输入: s = "aba"输出: false 示例 3: 输入: s = "abcabcabcabc"输出: true解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc...
2024-04-29 02:52:25
507
原创 监控二叉树
监控二叉树 给定一个二叉树,我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1: 输入:[0,0,null,0,0]输出:1解释:如图所示,一台摄像头足以监控所有节点。 示例 2: 输入:[0,0,null,0,null,0,null,null,0]输出:2解释:需要至少两个摄像头来监视树...
2022-02-28 01:28:05
290
原创 根据身高重建队列
根据身高重建队列 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki个身高大于或等于 hi 的人。 请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中...
2022-02-27 23:54:49
206
原创 分发糖果
分发糖果 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。 示例 1: 输入:ratings = [1,0,2]输出:5解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 ...
2022-02-26 23:46:48
253
原创 加油站
加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i]升。 你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油 cost[i]升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。 示例 1: 输入: g...
2022-02-26 23:31:39
262
原创 对称二叉树&相同的树&另一棵树的子树&树的子结构&合并二叉树
对称的二叉树 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3...
2022-02-21 00:00:27
759
原创 删除字符串中的所有相邻重复项
删除字符串中的所有相邻重复项 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例: 输入:"abbaca"输出:"ca"解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项...
2022-02-21 00:00:16
181
原创 填充每个节点的下一个右侧节点指针
填充每个节点的下一个右侧节点指针 给定一个 完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 N...
2022-02-20 16:13:31
149
原创 字符串
实现 strStr() 实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1。 方法一:暴力 public int strStr(String haystack, String needle) { for (int i = 0; i ...
2022-02-20 02:16:07
499
原创 有序数组的平方
有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100] 示例 2: 输入:nums = [-7,-3,2,3,11]输出:...
2022-02-18 23:48:07
363
原创 比较含退格的字符串
比较含退格的字符串 给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。 注意:如果对空文本输入退格字符,文本继续为空。 示例 1: 输入:s = "ab#c", t = "ad#c"输出:true解释:s 和 t 都会变成 "ac"。 示例 2: 输入:s = "ab##", t = "c#d#"输出:true解释:s 和 ...
2022-02-18 01:21:10
237
原创 进制转换
进制转换 给定一个十进制数 M ,以及需要转换的进制数 N 。将十进制数 M 转化为 N 进制数。 当 N 大于 10 以后, 应在结果中使用大写字母表示大于 10 的一位,如 'A' 表示此位为 10 , 'B' 表示此位为 11 。 若 M 为负数,应在结果中保留负号。 数据范围:M <= 108 , 2 <= N <= 16 public String solve (int...
2022-02-03 22:21:55
206
原创 多数元素
多数元素 给定一个大小为 *n *的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:[3,2,3]输出:3 示例 2: 输入:[2,2,1,1,1,2,2]输出:2 方法一:排序+取中间元素 public int majorityElement(int[] nums) { ...
2020-12-31 21:24:48
111
原创 连续数组
连续数组 给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。 示例 1: 输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。 示例 2: 输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组 方法一:计算0和1相对数量 使用一个变量 count ,用来保存遍历数...
2020-12-21 22:28:09
186
原创 按奇偶排序数组
按奇偶排序数组 给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。 你可以返回满足此条件的任何数组作为答案。 示例: 输入:[3,1,2,4]输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。 提示: 1 <= A.length <= 5000 0 <= A[i] <...
2020-12-20 22:43:59
151
原创 零钱
柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。 注意,一开始你手头没有任何零钱。 如果你能给每位顾客正确找零,返回 true ,否则返回 false 。 示例 1: 输入...
2020-12-17 18:57:53
166
原创 颜色分类
颜色分类 给定一个包含红色、白色和蓝色,一共 n个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 进阶: 你可以不使用代码库中的排序函数来解决这道题吗? 你能想出一个仅使用常数空间的一趟扫描算法吗? 示例 1: 输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2...
2020-12-15 14:07:51
236
原创 跳跃游戏
跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置 示例 2: 输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总...
2020-12-13 16:46:52
172
原创 两个数组的交集
两个数组的交集 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4] 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 方法一:Set+逐一判断 public int...
2020-12-10 15:38:43
170
原创 比较版本号
比较版本号 比较两个版本号 *version1 *和 version2。 如果 *version1 *> *version2* 返回 1,如果 *version1 *< *version2* 返回 -1, 除此之外返回 0。 你可以假设版本字符串非空,并且只包含数字和 . 字符。 . 字符不代表小数点,而是用于分隔数字序列。 例如,2.5 不是“两个半”,也不是“差一半到三”,而是第二...
2020-11-18 15:13:35
190
原创 存在重复元素
存在重复元素 给定一个整数数组,判断是否存在重复元素。 如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 示例 1: 输入: [1,2,3,1]输出: true 示例 2: 输入: [1,2,3,4]输出: false 示例 3: 输入: [1,1,1,3,3,4,3,2,4,2]输出: true 方法一:暴力(超时) publ...
2020-11-17 13:38:03
112
原创 2的幂
2的幂 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 输入: 1输出: true解释: 20 = 1 示例 2: 输入: 16输出: true解释: 24 示例 3: 输入: 218输出: false 方法一 时间复杂度logn public boolean isPowerOfTwo(int n) { if (n == 0) { retu...
2020-11-13 19:36:24
108
原创 去除重复字母
去除重复字母 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入:s = "bcabc"输出:"abc" 示例 2: 输入:s = "cbacdcbc"输出:"acdb" 提示: 1 <= s.length <= 104 s 由小写英文字母组成 方法一:一个字符一个...
2020-11-12 20:14:45
385
原创 蓄水池抽样
从很长的数据流等概率随机采样 数据流只有一个数据,我们接收数据,发现数据流结束了,直接返回该数据,该数据返回的概率为1 数据流里有两个数据,我们读到了第一个数据,继续读取第二个数据,发现数据流结束了。因此我们只要保证以相同的概率返回第一个或者第二个数据就可以满足题目要求,因此我们生成一个0到1的随机数R,如果R小于0.5我们就返回第一个数据,如果R大于0.5,返回第二个数据 有三个数据的数据流的...
2020-11-07 23:36:04
106
原创 顺时针打印矩阵
顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 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] public...
2020-10-03 16:23:51
76
原创 打印从1到最大的n位数
打印从1到最大的n位数 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n = 1输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数列表来代替打印 n 为正整数 正常情况 public int[] printNumbers(int n) { int[] ans ...
2020-09-27 00:38:19
92
原创 字符串转换整数
字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。 假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。 该字符串在有效的...
2020-09-14 22:17:19
88
原创 二叉搜索树中的插入操作
二叉搜索树中的插入操作 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。 例如, 给定二叉搜索树: 4 / \ 2 7 / \ 1 3 和 插...
2020-09-07 13:46:58
201
1
原创 整数反转
整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123输出: 321 示例 2: 输入: -123输出: -321 示例 3: 输入: 120输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 判断溢出:比较最...
2020-08-28 20:29:36
169
1
原创 阶乘后的零
阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量。 示例 1: 输入: 3输出: 0解释: 3! = 6, 尾数中没有零 示例 2: 输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零 超时: public int trailingZeroes(int n) { int count = 0; for (int i = 5; i <= n; ...
2020-08-26 00:08:32
107
原创 可被三整除的最大和
可被三整除的最大和 给你一个整数数组 nums,请你找出并返回能被三整除的元素最大和。 示例 1: 输入:nums = [3,6,5,1,8]输出:18解释:选出数字 3, 6, 1 和 8,它们的和是 18(可被 3 整除的最大和) 示例 2: 输入:nums = [4]输出:0解释:4 不能被 3 整除,所以无法选出数字,返回 0。 示例 3: 输入:nums = [1,2,3,4,...
2020-08-26 00:03:15
235
原创 移掉K位数字
移掉K位数字 给定一个以字符串表示的非负整数 num,移除这个数中的 *k *位数字,使得剩下的数字最小。 注意: num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。 示例 1 : 输入: num = "1432219", k = 3 输出: "1219" 解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。 示例 2 : 输入: ...
2020-08-25 00:55:46
96
原创 计算器
面试题 16.26. 计算器 给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。 表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。 示例 1: 输入: "3+2*2"输出: 7 示例 2: 输入: " 3/2 "输出: 1 示例 3: 输入: " 3+5 / 2 "输出: 5 private Map&...
2020-08-25 00:48:04
94
原创 数字转换为十六进制数
数字转换为十六进制数 给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。 注意: 十六进制中所有字母(a-f)都必须是小写。 十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符'0'来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。 给定的数确保在32位有符号整数范围内。 不能使用任何由库提供的将数字直接转换或格式...
2020-08-24 22:05:06
992
原创 x 的平方根
x 的平方根 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 *x *是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 输入: 4输出: 2 示例 2: 输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去 我的思路: public int mySqrt(int x) {...
2020-08-24 18:57:00
93
原创 删除重复元素
删除排序链表中的重复元素 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2输出: 1->2 示例 2: 输入: 1->1->2->3->3输出: 1->2->3 public ListNode deleteDuplicates(ListNode head) { ListNode ...
2020-08-11 00:21:21
150
原创 缺失数字
缺失的第一个正数 给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11,12] 输出: 1 方法一:哈希表 先将数组中出现的元素都加入到hash表中,在判断1~n+1是否在hash表中出现过,没有出现即为缺失的元素 public int...
2020-08-05 23:04:49
173
原创 把二叉搜索树转换为累加树
把二叉搜索树转换为累加树 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。 例如: 输入: 原始二叉搜索树: 5 / \ 2 13 输出: 转换为累加树: 18 ...
2020-08-05 01:21:51
75
原创 矩阵中的最长递增路径
矩阵中的最长递增路径 给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。 示例 1: 输入: nums = [ [9,9,4], [6,6,8], [2,1,1] ]输出: 4解释: 最长递增路径为 [1, 2, 6, 9]。 示例 2: 输入: nums = [ [3,4,5], [3,...
2020-08-04 17:32:42
186
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅