LeetCode
IllTamer
一只梦想成为Java架构师的小程序员
展开
-
洛谷 - P1015 [NOIP1999 普及组] 回文数 [Java版]
题目描述若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。例如:给定一个十进制数5656,将5656加6565(即把5656从右向左读),得到121121是一个回文数。又如:对于十进制数8787:STEP1:87+78=16587+78=165STEP2:165+561=726165+561=726STEP3:726+627=1353726+627=1353STEP4:1353+3531=48841353+3531=4884在这里的一步是...原创 2021-12-01 17:36:26 · 725 阅读 · 0 评论 -
洛谷 - P1014 [NOIP1999 普及组] Cantor 表 [Java版]
题目描述现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:1/11/1,1/21/2,1/31/3,1/41/4,1/51/5, …2/12/1,2/22/2,2/32/3,2/42/4, …3/13/1,3/23/2,3/33/3, …4/14/1,4/24/2, …5/15/1, ……我们以 Z 字形给上表的每一项编号。第一项是1/11/1,然后是1/21/2,2/12/1,3...原创 2021-11-30 12:33:05 · 512 阅读 · 0 评论 -
洛谷 - P1009 [NOIP1998 普及组] 阶乘之和 [Java版]
题目描述用高精度计算出S = 1! + 2! + 3! + \cdots + n!S=1!+2!+3!+⋯+n!(n \le 50n≤50)。其中“!”表示阶乘,例如:5! = 5 \times 4 \times 3 \times 2 \times 15!=5×4×3×2×1。输入格式一个正整数nn。输出格式一个正整数SS,表示计算结果。方法一:不讲武德法 java 里有个封装类叫 BigInteger,支持大数操作.... private s...原创 2021-11-29 19:41:39 · 680 阅读 · 0 评论 -
洛谷 - P1008 [NOIP1998 普及组] 三连击 [Java版]
题目背景本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。题目描述将1, 2, \ldots , 91,2,…,9共99个数分成33组,分别组成33个三位数,且使这33个三位数构成1 : 2 : 31:2:3的比例,试求出所有满足条件的33个三位数。输入格式无输出格式若干行,每行33个数字。按照每行第11个数字升序排列。方法一:暴力 对于处于 (100, 333) 的每一个数我...原创 2021-11-28 22:01:31 · 700 阅读 · 0 评论 -
洛谷 - P1003 [NOIP2011 提高组] 铺地毯 [Java版]
题目描述为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有nn张地毯,编号从11到nn。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。输入格式输入共n + 2n+2行。第一行,一个整数nn,表示总共有nn张地毯。接下来的nn行中...原创 2021-11-27 11:34:29 · 144 阅读 · 0 评论 -
洛谷 - P1002 [NOIP2002 普及组] 过河卒 [Java版]
题目描述棋盘上AA点有一个过河卒,需要走到目标BB点。卒行走的规则:可以向下、或者向右。同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,AA点(0, 0)(0,0)、BB点(n, m)(n,m),同样马的位置坐标是需要给出的。现在要求你计算出卒从AA点能够到达BB点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。输入格式一行四个正整数,分别表示BB点坐标和...原创 2021-11-26 21:50:07 · 391 阅读 · 0 评论 -
LeetCode-每日一题 384. 打乱数组 [Java实现]
给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。实现 Solution class:Solution(int[] nums) 使用整数数组 nums 初始化对象 int[] reset() 重设数组到它的初始状态并返回 int[] shuffle() 返回数组随机打乱后的结果示例:输入["Solution", "shuffle", "reset", "shuffle"][[[1, 2, 3]], [], [], []]输出[null, [3, 1, 2], [1原创 2021-11-22 16:00:00 · 98 阅读 · 0 评论 -
LeetCode-每日一题 559. N 叉树的最大深度 [Java实现]
给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:3方法一:递归 唯一需要注意的地方就是传入的 root 节点可能为空,此时数的最大深度为 0,其余情况下都需要对递归结果 + 1 (根节点自身也算深度)。 public int maxDepth(Node r...原创 2021-11-21 10:15:00 · 243 阅读 · 0 评论 -
LeetCode-每日一题 594. 最长和谐子序列 [Java实现]
和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。示例 1:输入:nums = [1,3,2,2,5,2,3,7]输出:5解释:最长的和谐子序列是 [3,2,2,2,3]提示:1 <= nums.length <= 2 * 10^4 -10^9<= .原创 2021-11-20 12:15:03 · 104 阅读 · 0 评论 -
LeetCode-每日一题 397. 整数替换 [Java实现] [极速]
给定一个正整数n ,你可以做如下操作:如果n是偶数,则用n / 2替换n 。 如果n是奇数,则可以用n + 1或n - 1替换n 。n变为 1 所需的最小替换次数是多少?示例 1:输入:n = 8输出:3解释:8 -> 4 -> 2 -> 1方法一:贪心分析所有的可能我们能列出如下情况传入 n 是偶数 -> 计数+1,n /= 2 n 是奇数 n % 4 == 1,通过分析我们可知将 n -= 1 所得结果不会比 n+= 1 更...原创 2021-11-19 09:00:00 · 492 阅读 · 0 评论 -
LeetCode-每日一题 563. 二叉树的坡度 [Java实现]
给定一个二叉树,计算 整个树 的坡度 。一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0 。整个树 的坡度就是其所有节点的坡度之和。示例 1:输入:root = [1,2,3]输出:1解释:节点 2 的坡度:|0-0| = 0(没有子节点)节点 3 的坡度:|0-0| = 0(没有子节点)节点 1 的坡度:|2-3| = 1(左子树就是左子节点,所以原创 2021-11-18 13:46:47 · 126 阅读 · 0 评论 -
LeetCode-每日一题 318. 最大单词长度乘积 [Java实现]
给定一个字符串数组words,找到length(word[i]) * length(word[j])的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。示例1:输入: ["abcw","baz","foo","bar","xtfn","abcdef"]输出: 16解释: 这两个单词为 "abcw", "xtfn"。方法一:位运算 一个有意思的点是要判断字符串中是否拥有任何重复小写字母,而小写字母的个数总计2...原创 2021-11-17 19:21:42 · 143 阅读 · 0 评论 -
LeetCode-每日一题 391. 完美矩形 [Java实现] [极速] [极简]
给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 (xi, yi) ,右上顶点是 (ai, bi) 。如果所有矩形一起精确覆盖了某个矩形区域,则返回 true ;否则,返回 false 。示例 1:输入:rectangles = [[1,1,3,3],[3,1,4,2],[3,2,4,4],[1,3,2,4],[2,3,3,4]]输出:true解释:5 个矩形一起可以精确地覆盖一个原创 2021-11-16 14:55:15 · 618 阅读 · 0 评论 -
LeetCode-每日一题 319. 灯泡开关 [Java实现] [极速] [极简]
初始时有n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮,你只需要切换最后一个灯泡的开关。找出并返回 n轮后有多少个亮着的灯泡。示例 1:输入:n = 3输出:1解释:初始时, 灯泡状态 [关闭, 关闭, 关闭].第一轮后, 灯泡状态 [开启, 开启, 开启].第二轮后, 灯泡状态 [开启...原创 2021-11-15 10:15:00 · 719 阅读 · 0 评论 -
LeetCode-每日一题677. 键值映射 [Java实现]
实现一个 MapSum 类,支持两个方法,insert和sum:MapSum() 初始化 MapSum 对象 void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整数表示值 val 。如果键 key 已经存在,那么原来的键值对将被替代成新的键值对。 int sum(string prefix) 返回所有以该前缀 prefix 开头的键 key 的值的总和。 示例:输入:["MapSum", "insert", "s...原创 2021-11-14 23:58:44 · 459 阅读 · 0 评论 -
LeetCode-每日一题 520. 检测大写字母 [Java实现] [极速]
我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如 "USA" 。 单词中所有字母都不是大写,比如 "leetcode" 。 如果单词不只含有一个字母,只有首字母大写,比如"Google" 。给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。示例 1:输入:word = "USA"输出:true方法一:分治由题分析可得上述三种正确的单词格式可以归类为一下三种:首字母大写 其余字母全小写 其余字母全大写 ..原创 2021-11-13 09:00:00 · 417 阅读 · 0 评论 -
LeetCode-每日一题 375. 猜数字大小 II [Java实现] []
我们正在玩一个猜数游戏,游戏规则如下:我从1到 n 之间选择一个数字。你来猜我选了哪个数字。如果你猜到正确的数字,就会 赢得游戏 。如果你猜错了,那么我会告诉你,我选的数字比你的 更大或者更小 ,并且你需要继续猜数。每当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。如果你花光了钱,就会 输掉游戏 。给你一个特定的数字 n ,返回能够 确保你获胜 的最小现金数,不管我选择那个数字 。示例 1:输入:n = 10输出:16解释:制胜策略如下:- 数字范围是 [..原创 2021-11-12 20:29:51 · 122 阅读 · 0 评论 -
LeetCode-每日一题 629. K个逆序对数组 [Java实现]
给出两个整数n和k,找出所有包含从1到n的数字,且恰好拥有k个逆序对的不同的数组的个数。逆序对的定义如下:对于数组的第i个和第j个元素,如果满i<j且a[i]>a[j],则其为一个逆序对;否则不是。由于答案可能很大,只需要返回 答案 mod 109+ 7 的值。示例 1:输入: n = 3, k = 0输出: 1解释:只有数组 [1,2,3] 包含了从1到3的整数并且正好拥有 0 个逆序对。方法一:动态规划从 nn 和 kk 数据范...转载 2021-11-11 23:22:11 · 112 阅读 · 0 评论 -
LeetCode-每日一题 495. 提莫攻击 [Java实现] [极速]
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。当提莫攻击艾希,艾希的中毒状态正好持续duration 秒。正式地讲,提莫在 t 发起发起攻击意味着艾希在时间区间 [t, t + duration - 1](含 t 和 t + duration - 1)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duration 秒后结束。给你一个 非递减 的整数数组 timeS.原创 2021-11-10 16:37:39 · 496 阅读 · 1 评论 -
LeetCode-每日一题 488. 祖玛游戏 [Java实现]
你正在参与祖玛游戏的一个变种。在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'、黄色 'Y'、蓝色 'B'、绿色 'G' 或白色 'W' 。你的手中也有一些彩球。你的目标是 清空 桌面上所有的球。每一回合:从你手上的彩球中选出 任意一颗 ,然后将其插入桌面上那一排球中:两球之间或这一排球的任一端。接着,如果有出现 三个或者三个以上 且 颜色相同 的球相连的话,就把它们移除掉。如果这种移除操作同样导致出现三个或者三个以上且颜色相同的球相连,则可以继续移除这些球,直到原创 2021-11-09 15:18:08 · 320 阅读 · 1 评论 -
LeetCode-每日一题 299. 猜数字游戏 [Java实现]
你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:猜测数字中有多少位属于数字和确切位置都猜对了(称为 "Bulls", 公牛), 有多少位属于数字猜对了但是位置不对(称为 "Cows", 奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。给你一个秘密数字secret 和朋友猜测的数字guess ,请你返回对朋友这...原创 2021-11-08 08:30:00 · 125 阅读 · 0 评论 -
LeetCode-每日一题 598. 范围求和 II [Java实现] [极速] [极简]
给定一个初始元素全部为0,大小为 m*n 的矩阵M以及在M上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数a 和 b 的数组表示,含义是将所有符合0 <= i < a 以及 0 <= j < b 的元素M[i][j]的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。示例 1:输入:m = 3, n = 3operations = [[2,2],[3,3]]输出: 4解释:初始状态,...原创 2021-11-07 00:18:30 · 107 阅读 · 0 评论 -
LeetCode-每日一题 268. 丢失的数字 [Java实现] [极简]
给定一个包含 [0, n]中n个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。示例 1:输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。方法一:排序 观察题目可以得出以一个隐含条件 给定数组中无重复项。那么对于一个无重复项的数组,在确保其首尾的合法性之后枚举中间项找到突变点索引即可。 public in...原创 2021-11-06 00:51:05 · 145 阅读 · 0 评论 -
LeetCode-每日一题 1218. 最长定差子序列 [Java实现] [极简]
给你一个整数数组arr和一个整数difference,请你找出并返回 arr中最长等差子序列的长度,该子序列中相邻元素之间的差等于 difference 。子序列 是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从 arr 派生出来的序列。示例 1:输入:arr = [1,2,3,4], difference = 1输出:4解释:最长的等差子序列是 [1,2,3,4]。方法一:dp+哈希表 通过观察我们不难发现最长定差子序列的每一项的长度与...原创 2021-11-05 14:22:32 · 111 阅读 · 0 评论 -
LeetCode-每日一题 367. 有效的完全平方数 [Java实现] [极速]
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如sqrt 。示例 1:输入:num = 16输出:true方法一:双指针 双指针反复判断边界,需要注意的点是储存值要为long不然结果可能溢出(当然聪明的你可以通过求余来降低空间复杂度,我就直接写了看起来直观点)。 public static boolean isPerfectSquare(int nu...原创 2021-11-04 17:00:44 · 114 阅读 · 0 评论 -
LeetCode-每日一题 237. 删除链表中的节点 [Java实现] [极速] [极简]
请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:指定链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9方法一:值替换 题目翻译的不是很好,事实上题目的意思是 在只给定当前节点的情况下删除...原创 2021-11-02 06:45:00 · 133 阅读 · 0 评论 -
LeetCode-每日一题 575. 分糖果 [Java实现] [极简]
给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。示例 1:输入: candies = [1,1,2,2,3,3]输出: 3解析: 一共有三种种类的糖果,每一种都有两个。 最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数最多。方法一:不同的数字种类 观察题目不难发现所谓 “妹妹可以获得的最大糖果的种类数” 其实...原创 2021-11-01 08:00:00 · 104 阅读 · 0 评论 -
LeetCode-每日一题 500. 键盘行 [Java实现] [极速]
给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。美式键盘 中:第一行由字符 "qwertyuiop" 组成。 第二行由字符 "asdfghjkl" 组成。 第三行由字符 "zxcvbnm" 组成。示例 1:输入:words = ["Hello","Alaska","Dad","Peace"]输出:["Alaska","Dad"]方法一:哈希表 一眼看去一共三组不重复的表单,且输入字符串应全为一种表单里的...原创 2021-10-31 09:00:00 · 144 阅读 · 0 评论 -
LeetCode-每日一题 260. 只出现一次的数字 III [Java实现]
给定一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?示例 1:输入:nums = [1,2,1,3,2,5]输出:[3,5]解释:[5, 3] 也是有效的答案。方法一:排序 这道题上来先看看进阶要求:线性复杂,常数空间。好嘛我们不妨把条件放宽点,既然数组元素仅两个唯一且重复次数固定,那么为什么不采用 O(Nlo...原创 2021-10-30 08:00:00 · 111 阅读 · 0 评论 -
LeetCode-每日一题 335. 路径交叉 [Java实现]
给你一个整数数组 distance 。从 X-Y 平面上的点(0,0)开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南移动 distance[2] 米,向东移动 distance[3] 米,持续移动。也就是说,每次移动后你的方位会发生逆时针变化。判断你所经过的路径是否相交。如果相交,返回 true ;否则,返回 false 。示例 1:输入:distance = [2,1,1,2]输出:true方法一:逻辑分析 今...原创 2021-10-29 08:30:00 · 100 阅读 · 0 评论 -
LeetCode-每日一题 869. 重新排序得到 2 的幂 [Java实现]
给定正整数 N,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。如果我们可以通过上述方式得到2 的幂,返回 true;否则,返回 false。示例 1:输入:1输出:true提示:1 <= N <= 10^9方法一:穷举 由提示可知给定的 N 在int型范围内,那么对于最取巧的方法来说,不妨在开始就枚举完所有的 2^n 的值并将位数从小到大进行排序(如 512 -> 125),在输入数值时也进行相同的位数排序处理并直接与...原创 2021-10-28 14:20:12 · 157 阅读 · 0 评论 -
LeetCode-每日一题 301. 删除无效的括号 [Java实现]
给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。示例 1:输入:s = "()())()"输出:["(())()","()()()"]方法一:深搜 分析题目,要求返回所有可能的结果,这就需要我们对每一个可能的结果都要进行判断,基于此我们选择深度优先搜索算法。我们首先定义终止情况:当给定字符串枚举完成时 当当前字符串中未匹配括号数超出最大限制时为实现第二种终止...原创 2021-10-27 17:10:13 · 199 阅读 · 0 评论 -
LeetCode-每日一题 496. 下一个更大元素 I [Java实现] [极速]
给你两个 没有重复元素 的数组nums1 和nums2,其中nums1是nums2的子集。请你找出 nums1中每个元素在nums2中的下一个比其大的值。nums1中数字x的下一个更大元素是指x在nums2中对应位置的右边的第一个比x大的元素。如果不存在,对应位置输出 -1 。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输出: [-1,3,-1]解释: 对于 num1 中的数字 4 ,你无法在第二个数组...原创 2021-10-26 08:45:00 · 103 阅读 · 0 评论 -
LeetCode-每日一题 240. 搜索二维矩阵 II [Java实现] [极速]
编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。 每列的元素从上到下升序排列。示例 1:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true方法一:Z 字形查找我们可以从矩阵 matriz的右上角(0, n―1)进行搜索。在每一步...原创 2021-10-25 23:55:42 · 173 阅读 · 0 评论 -
LeetCode-每日一题 492. 构造矩形 [Java实现] [极速] [极简]
作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求:1. 你设计的矩形页面必须等于给定的目标面积。2. 宽度 W 不应大于长度 L,换言之,要求 L >= W 。3. 长度 L 和宽度 W 之间的差距应当尽可能小。你需要按顺序输出你设计的页面的长度 L 和宽度 W。示例:输入: 4输出: [2, 2]解释: 目标面积是 4, 所有可能的构造方案有 [1原创 2021-10-23 01:03:30 · 77 阅读 · 0 评论 -
LeetCode-每日一题 229. 求众数 II [Java实现] [极速]
给定一个大小为n的整数数组,找出其中所有出现超过⌊ n/3 ⌋次的元素。示例1:输入:[3,2,3]输出:[3]方法一:排序已知在 n >= 3 的情况下,所求众数在数组中经排序后所占长度一定 >n/3(例如 [1,1,1,2,2,3,3] 7/3=2)。借此特性我们可以根据当前位数值(nums[index])与下个阈值长度处值(nums[index+threshold])是否相等来判断index处起的一串数字是否为众数。加上一些特殊情况判断...原创 2021-10-22 16:32:01 · 179 阅读 · 0 评论 -
LeetCode-每日一题 453. 最小操作次数使数组元素相等 [Java实现] [极速]
给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。示例 1:输入:nums = [1,2,3]输出:3解释:只需要3次操作(注意每次操作会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]方法一:数学每次将n-1个元素+1也即每次将一个元素-1,由题设终止条件可知当每个数都等于数组中的最小值时有 ,其中num...原创 2021-10-20 16:00:04 · 234 阅读 · 0 评论 -
LeetCode-每日一题 211. 添加与搜索单词 - 数据结构设计 [Java实现]
请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配 。实现词典类 WordDictionary :WordDictionary() 初始化词典对象 void addWord(word) 将 word 添加到数据结构中,之后可以对它进行匹配 bool search(word) 如果数据结构中存在字符串与word 匹配,则返回 true ;否则,返回false 。word 中可能包含一些 '.' ,每个. 都可以表示任何一个字母。示例:输入:["W...原创 2021-10-19 09:30:00 · 98 阅读 · 0 评论 -
LeetCode-每日一题 476. 数字的补数 [Java实现] [极速] [极简]
对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。例如,整数 5 的二进制表示是 "101" ,取反后得到 "010" ,再转回十进制表示得到补数 2 。给你一个整数 num ,输出它的补数。示例 1:输入:num = 5输出:2解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。方法一:位运算 public int findComplement(int num) { re原创 2021-10-18 16:28:13 · 98 阅读 · 0 评论 -
LeetCode-每日一题 230. 二叉搜索树中第K小的元素 [Java实现] [极速] [极简]
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第k个最小元素(从 1 开始计数)。示例 1:输入:root = [3,1,4,null,2], k = 1输出:1方法一:中序遍历维护一个索引值,由中序遍历的特点可得当当前遍历项的索引等于k时,该项即为第k个最小值 private int k; private int index = 0; private boolean flag = false; privat..原创 2021-10-17 23:59:39 · 114 阅读 · 0 评论