leetcode
Ostrich5yw
I'm here,As always
展开
-
LeetCode—美团2021秋招 006、007、008、009
题目描述:小团深谙保密工作的重要性,因此在某些明文的传输中会使用一种加密策略,小团如果需要传输一个字符串 S ,则他会为这个字符串添加一个头部字符串和一个尾部字符串。头部字符串满足至少包含一个 “MT” 子序列,且以 T 结尾。尾部字符串需要满足至少包含一个 “MT” 子序列,且以 M 开头。例如 AAAMT 和 MAAAT 都是一个合法的头部字符串,而 MTAAA 就不是合法的头部字符串。很显然这样的头尾字符串并不一定是唯一的,因此我们还有一个约束,就是 S 是满足头尾字符串合法的情况下的最长的字符串原创 2022-07-11 08:59:00 · 739 阅读 · 1 评论 -
LeetCode—美团2021秋招 001、002、003、004
题目描述:小美是美团的前端工程师,为了防止系统被恶意攻击,小美必须要在用户输入用户名之前做一个合法性检查,一个合法的用户名必须满足以下几个要求:用户名的首字符必须是大写或者小写字母。用户名只能包含大小写字母,数字。用户名需要包含至少一个字母和一个数字。如果用户名合法,请输出 “Accept”,反之输出 “Wrong”。小美是美团仓库的管理员,她会根据单据的要求按顺序取出仓库中的货物,每取出一件货物后会把剩余货物重新堆放,使得自己方便查找。已知货物入库的时候是按顺序堆放在一起的。如果小美取出其中原创 2022-07-08 10:41:42 · 593 阅读 · 1 评论 -
LeetCode—剑指 Offer 51. 数组中的逆序对
题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。考察重点:第51题归并排序实现。在排序过程中,比较左右两数组元素大小时,计算逆序对个数。...原创 2022-06-25 09:49:02 · 322 阅读 · 0 评论 -
LeetCode—<动态规划专项>剑指 Offer 19、49、60
题目描述:请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率原创 2022-06-24 09:56:53 · 212 阅读 · 0 评论 -
LeetCode—剑指 Offer 37、38
题目描述:请实现两个函数,分别用来序列化和反序列化二叉树。你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示:输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列化二叉树的格式。你并非必须采取这种方式,你也可以采用其他的方法解决这个问题。输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能原创 2022-06-23 15:28:39 · 238 阅读 · 0 评论 -
LeetCode—剑指 Offer 59 - I、59 - II
题目描述:给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1考察重点:第59 - I题使用优先队列(堆)实现窗口内元素排序,循环遍历模拟窗口滑动第59 - II题使用一个单调队列进行辅助,保存队列元素大小关系。......原创 2022-06-22 10:05:59 · 103 阅读 · 0 评论 -
LeetCode—<数学专项>剑指 Offer 20、29、31、67
题目描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。数值(按顺序)可以分成以下几个部分:若干空格一个 小数 或者 整数(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数若干空格小数(按顺序)可以分成以下几个部分:(可选)一个符号字符(‘+’ 或 ‘-’)下述格式之一:至少一位数字,后面跟着一个点 ‘.’至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字一个点 ‘.’ ,后面跟着至少一位数字整数(按顺序)可以分成以下几个部分:(可选)一个符号字符(‘+’原创 2022-06-21 17:35:36 · 117 阅读 · 0 评论 -
LeetCode—<数学专项>剑指 Offer 14 - I、39、57 - II、62、66
题目描述:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。输入一个正整数 target ,输出所有和为 target 的连续原创 2022-06-18 09:04:36 · 249 阅读 · 0 评论 -
LeetCode—<位运算专项>剑指 Offer 15、56 - I、56 - II、65
题目描述:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。提示:在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。一个整型数组 nums 里除两个数字之外原创 2022-06-17 09:19:01 · 114 阅读 · 0 评论 -
LeetCode—<分治专项>剑指 Offer 07、16、33
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。考察重点:第07题先通过先序数组确定中间节点A,再进入中序数组找到A,将中序数组划分为左右两部分(即左右子原创 2022-06-15 10:12:34 · 223 阅读 · 0 评论 -
LeetCode—<搜索与回溯专项>剑指 Offer 55 - I、55 - II、64、68 - I、68 - II
题目描述:考察重点:第55- I题 深度遍历即可。节点为nil则返回0,反之返回max(dfs(left),dfs(right))+1第55- II题在返回节点当前深度的基础上,返回当前子树是否为平衡二叉树。这样的好处是一旦发现一棵子树不是平衡二叉树,后续无需再计算,直接返回fasle。......原创 2022-06-13 09:00:36 · 134 阅读 · 0 评论 -
LeetCode—<排序专项>剑指 Offer 40、41、45、61
题目描述:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是原创 2022-06-12 22:25:57 · 233 阅读 · 0 评论 -
LeetCode—<搜索与回溯专项>剑指 Offer 12、13、34、36、54
题目描述:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和原创 2022-06-09 09:53:46 · 143 阅读 · 0 评论 -
LeetCode—<双指针专项>剑指 Offer 18、21、22、25、52、57、58 - I
题目描述:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。输入两个递增排序的链表原创 2022-06-08 10:57:42 · 135 阅读 · 0 评论 -
LeetCode—<动态规划专项>剑指 Offer 42、46、47、48
题目描述: 考察重点:第42题要计算最大子数组和,考虑第i位,如果前序和为负,则一定有nums[i] > nums[i] + sum;所以我们用sum记录当前数组和,如果sum原创 2022-06-07 10:09:20 · 141 阅读 · 0 评论 -
LeetCode—剑指 Offer 10 - I、II 斐波那契数列、青蛙跳台阶问题 63. 股票的最大利润
题目描述:[I] 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。[II] 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。[63] 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多原创 2022-06-06 10:02:21 · 226 阅读 · 0 评论 -
LeetCode—剑指 Offer 32 - I、II、III. 从上到下打印二叉树
题目描述:[I] 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。[II] 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。[III] 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。考察重点:着重注意题目3,使用Golang中的list数据结构,作为队列进行层次遍历。第一题第二题第三题原创 2022-06-01 10:35:40 · 317 阅读 · 0 评论 -
LeetCode—剑指 Offer 4、9、26、35、53
剑指 Offer 53 - I. 在排序数组中查找数字 I题目描述:统计一个数字在排序数组中出现的次数。考察重点:两次二分查找,分别锁定重复数字的左右边界点。public int search(int[] nums, int target) { if(nums.length == 0) //特殊情况排除 return 0; else if(nums.length == 1 && target == nums[0]){原创 2022-05-30 15:20:34 · 98 阅读 · 0 评论 -
LeetCode—309. 最佳买卖股票时机含冷冻期
309. 最佳买卖股票时机含冷冻期题目描述:给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。考察重点:此类问题应首先想到动态规划。本题每一天涉及三个状态——买入、冷冻、卖出,所以需要三个数组分别对应三个状态转移方程。其中,buy原创 2022-05-25 09:16:09 · 277 阅读 · 0 评论 -
LeetCode—307. 区域和检索 - 数组可修改
307. 区域和检索 - 数组可修改题目描述:给你一个数组 nums ,请你完成两类查询。其中一类查询要求 更新 数组 nums 下标对应的值另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nums元素的 和 ,其中 left <= right实现 NumArray 类:NumArray(int[] nums) 用整数数组 nums 初始化对象void update(int index, int val) 将 nums[index] 的值 更新原创 2022-05-24 09:28:16 · 167 阅读 · 0 评论 -
LeetCode—59. 螺旋矩阵 II
59. 螺旋矩阵 II题目描述:给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。考察重点:way数组记录走的方向,结合DFS实现矩阵螺旋遍历。int way[][] = new int[][]{{0, 1}, {1, 0}, {0, -1}, {-1, 0}};int [][]res;public int[][] dfs(int m, int num, int x, int y){ if(m == 4)原创 2022-05-23 09:31:39 · 109 阅读 · 0 评论 -
LeetCode—306. 累加数
306. 累加数题目描述:累加数 是一个字符串,组成它的数字可以形成累加序列。一个有效的 累加序列 必须 至少 包含 3 个数。除了最开始的两个数以外,序列中的每个后续数字必须是它之前两个数字之和。给你一个只包含数字 ‘0’-‘9’ 的字符串,编写一个算法来判断给定输入是否是 累加数 。如果是,返回 true ;否则,返回 false 。说明:累加序列里的数,除数字 0 之外,不会 以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。考察重点:判断一个字符串是否符合前原创 2022-05-23 09:00:14 · 165 阅读 · 0 评论 -
LeetCode—57. 插入区间
57. 插入区间题目描述:给你一个 无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。考察重点:题目要求必要时可以合并区间,所以需要遍历所有存在的区间。我们由list保存新的区间序列,isIn记录新区间是否已经插入序列:由前至后遍历,如果新区间与当前区间无交集且新区间大,则只插入当前区间;如果新区间与当前区间无交集且新区间小,说明新区间与原序列无交集则插入二者;如果有交集,则更新新区间的范围,继续向后查找。原创 2022-05-21 09:53:27 · 86 阅读 · 0 评论 -
LeetCode—304. 二维区域和检索 - 矩阵不可变
304. 二维区域和检索 - 矩阵不可变题目描述:给定一个二维矩阵 matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的 左上角 为 (row1, col1) ,右下角 为 (row2, col2) 。实现 NumMatrix 类:NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进行初始化int sumRegion(int row1, int col1, int row2, int col2) 返回 左上角 (row1, col1) 、右下角原创 2022-05-21 09:04:40 · 147 阅读 · 0 评论 -
LeetCode—56. 合并区间
56. 合并区间题目描述:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。考察重点:先对数组按照第一列进行排序,后续用startI记录每一个新行的起点,j负责遍历寻找startI之后与其相交的行。注意:这里将新区间记录在原数组中(由于从前向后遍历,这样存储并不影响原数组的遍历)。public int[][] merge(int[]原创 2022-05-20 11:22:45 · 78 阅读 · 0 评论 -
LeetCode—301. 删除无效的括号(困难)
301. 删除无效的括号题目描述:给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按 任意顺序 返回。考察重点:题目要求找到合法且删除最少括号的情况,所以可以想到使用BFS。维护两个字符串数组cur和next,每次遍历cur并删除任意元素,任意位置上的一个 ‘(’ 或 ‘)’,并加入新的字符串数组next,使用isValid判断每一轮数组中是否有合法的字符串,一旦有,立刻返回结果数组。这里使用set替换字符串数组,以此来去重原创 2022-05-20 10:01:36 · 155 阅读 · 0 评论 -
LeetCode—233. 数字 1 的个数(困难)
233. 数字 1 的个数(困难)题目描述:给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。考察重点:分别计算个、十、百…千位上1出现的次数,再求和。func countDigitOne(n int) int { num, i, numOne := n, 1, 0 for num > 0{ if num % 10 == 0 { numOne += (num / 10)* i }原创 2022-05-19 09:36:55 · 153 阅读 · 0 评论 -
LeetCode—300. 最长递增子序列
300. 最长递增子序列题目描述:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。考察重点:动态规划。根据题意可以写出转移方程:dp[i] = Max(d[i], dp[j] +1) 且j满足 nums[j] < nums[i] 和 j < ifunc lengthOfLIS(nums []int) int原创 2022-05-19 08:53:32 · 175 阅读 · 0 评论 -
LeetCode—55. 跳跃游戏
55. 跳跃游戏题目描述:给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。考察重点:由前至后遍历数组,maxPos记录我们当前可以到达的最远位置。 public boolean canJump(int[] nums) { int maxPos = 0; for(int i = 0;i < nums.length;i ++){ i原创 2022-05-18 11:29:21 · 261 阅读 · 0 评论 -
LeetCode—299. 猜数字游戏
299. 猜数字游戏题目描述:你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:猜测数字中有多少位属于数字和确切位置都猜对了(称为 “Bulls”,公牛),有多少位属于数字猜对了但是位置不对(称为 “Cows”,奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。给你一个秘密数字 secret 和朋友猜测的数字 guess ,请你返回对朋友这次猜测的原创 2022-05-18 11:16:16 · 155 阅读 · 0 评论 -
LeetCode—54. 螺旋矩阵
54. 螺旋矩阵题目描述:给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。考察重点:使用全局变量way数组,配合变量n记录走的方向;nowX,nowY记录当前位置;并将走过的位置置为101,不可再走;当发现n,n+1都无路可走时,说明遍历完成,返回结果链表list。int way[][] = new int[][]{{0, 1}, {1, 0}, {0, -1}, {-1, 0}};int nowX, nowY;public int goWay(原创 2022-05-17 09:32:58 · 113 阅读 · 0 评论 -
LeetCode—297. 二叉树的序列化与反序列化(困难)
297. 二叉树的序列化与反序列化(困难)题目描述:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示: 输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列化二原创 2022-05-17 09:08:46 · 81 阅读 · 0 评论 -
LeetCode—52. N皇后 II(困难)
52. N皇后 II(困难)题目描述:n 皇后问题研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。即令其中任意两个皇后都不同列、同行和在一条斜线上。给你一个整数 n ,返回 n 皇后问题不同的解决方案的数量。考察重点:具体参考51题。该题返回最终结果的size即可。int res = 0;public boolean isLegal(char map[][], int x, int y){ for(int i = 0;i < map.len原创 2022-05-16 09:02:41 · 180 阅读 · 0 评论 -
LeetCode—295. 数据流的中位数(困难)
295. 数据流的中位数题目描述:中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。考察重点:利用sort.IntSlice完成数组的排序并实现小顶堆,继承IntSlice完成数组的逆原创 2022-05-16 08:54:01 · 240 阅读 · 0 评论 -
LeetCode—289. 生命游戏
289. 生命游戏题目描述:根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞 (dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞原创 2022-05-15 21:49:05 · 330 阅读 · 0 评论 -
LeetCode—51. N 皇后(困难)
51. N 皇后题目描述:n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击,即使其中任意两个皇后都不同列、同行和在一条斜线上。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。考察重点:需要找出所有情况,应立刻想到DFS,同时为了方便查找,使用二维数组代替链表进行遍历。使用isLegal()函数判断斜边,列是否存在Queen;D原创 2022-05-13 10:33:41 · 333 阅读 · 0 评论 -
LeetCode—287. 寻找重复数
287. 寻找重复数题目描述:给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有一个重复的整数 ,返回这个重复的数 。你设计的解决方案必须不修改数组 nums 且只用常量级 O(1) 的额外空间。考察重点:类似于成环问题141,142题。根据142题结论:当发现 slow 与 fast 相遇时,我们再额外使用一个指针ptr。起始,它指向链表头部;随后,它和 slow 每次向后移动一个位置。最终原创 2022-05-13 09:32:46 · 261 阅读 · 0 评论 -
LeetCode—50. Pow(x, n)
50. Pow(x, n)题目描述:实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn )。考察重点:倍乘,使用递归,每次aadN取2,4,8,16…个数进行累乘,直到aadN > n,则用n-addN并再次进入递归public double getPow(double x, int leftN, double res){ if(leftN == 0) return res; if(leftN == -1)原创 2022-05-12 10:46:04 · 187 阅读 · 0 评论 -
LeetCode—284. 顶端迭代器
284. 顶端迭代器题目描述:请你在设计一个迭代器,在集成现有迭代器拥有的 hasNext 和 next 操作的基础上,还额外支持 peek 操作。实现 PeekingIterator 类:PeekingIterator(Iterator nums) 使用指定整数迭代器 nums 初始化迭代器。int next() 返回数组中的下一个元素,并将指针移动到下个元素处。bool hasNext() 如果数组中存在下一个元素,返回 true ;否则,返回 false 。int peek() 返回数组原创 2022-05-12 09:39:38 · 150 阅读 · 0 评论 -
LeetCode—49. 字母异位词分组
49. 字母异位词分组题目描述:给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。考察重点:转为char[]数组进行排序,之后再转为String并结合Map进行分组。需要注意:char[]数组不能作为Map的键参考博客public List<List<String>> groupAnagrams(String[] strs) { Map&l原创 2022-05-11 10:17:05 · 248 阅读 · 0 评论