![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
铁锅炖鱼,铜锅涮肉
火龙果奇异果芒果橙子和石榴
展开
-
【面试题59 - II. 队列的最大值】(普通队列)
刚开始用了优先队列PriorityQueue,在一组测试样例中过不了,输出总是[], [], [], [], [], [], [], 16, [], 22,正确答案应该是[], [], [], [], [], [], [], 96, [], 16。经过调试,终于想起了,这是优先队列,默认将队列按照升序排列,而此题应该使用普通队列。原创 2022-11-06 20:51:56 · 196 阅读 · 0 评论 -
【面试题13. 机器人的运动范围】(回溯)
这道题说的不清楚,其实包含一个隐含条件:不可达的方格相当于障碍物,不能通过不可达的方格到达别的符合条件的方格。如这个图中,上面那块符合条件的方格是可达的,但是无法到达下面符合条件的区域。原创 2022-11-06 16:44:07 · 164 阅读 · 0 评论 -
【剑指 Offer 68 - II. 二叉树的最近公共祖先】(同上一题一样)
思路和代码和上一题相同。原创 2022-11-06 15:38:12 · 277 阅读 · 0 评论 -
【剑指 Offer 68 - I. 二叉搜索树的最近公共祖先】
如果节点c为目标节点之一,且c.right及其子树中包含另一个目标节点,那么c是最近公共祖先;如果节点c为目标节点之一,且c.left及其子树中包含另一个目标节点,那么c是最近公共祖先;如果c的左右子树中都包含目标节点,那么c是最近公共祖先。原创 2022-11-06 15:34:19 · 112 阅读 · 0 评论 -
【剑指 Offer 67. 把字符串转换成整数】(有限状态机)
能挣扎一下,但不多(大哭……原创 2022-11-06 14:59:02 · 125 阅读 · 0 评论 -
【剑指 Offer 66. 构建乘积数组】(很巧妙)
左边和右边分别乘起来,最后两者再相乘。原创 2022-11-01 20:03:11 · 64 阅读 · 0 评论 -
【剑指 Offer 65. 不用加减乘除做加法】(位运算)
【代码】【剑指 Offer 65. 不用加减乘除做加法】(位运算)原创 2022-10-30 19:25:58 · 74 阅读 · 0 评论 -
【剑指 Offer 64. 求1+2+…+n】(递归代替循环)
不能用循环,可以使用递归。原创 2022-10-30 19:16:49 · 59 阅读 · 0 评论 -
【剑指 Offer 63. 股票的最大利润】
双重循环,向前查找如果有利润大于当前最大利润的,记录下来。原创 2022-10-30 19:15:18 · 68 阅读 · 0 评论 -
【剑指 Offer 62. 圆圈中最后剩下的数字】(递归)
暴力法,超出时间限制。原创 2022-10-30 18:54:19 · 67 阅读 · 0 评论 -
【剑指 Offer 61. 扑克牌中的顺子】
先对数组进行排序,计算0的个数为cnt0。从非0数开始计算,如果有两个相邻的数相等,必然不能构成顺子;如果相邻的两个数相差不为1,累加缺少的排的数量diffe。如果diffe为0,意味着不缺少排,或者cnt0>diffe,即0牌的数大于缺少的数量,则返回TRUE。原创 2022-10-30 15:26:42 · 190 阅读 · 0 评论 -
【剑指 Offer 60. n个骰子的点数】(深搜 / 动态规划)
首先想到用深搜穷举所有可能的组合,然后计算每个点数出现的概率。(我好喜欢用深搜,然而好几次深搜只能通过部分测试样例,要快速排序才能完全解决问题)原创 2022-10-30 11:14:00 · 84 阅读 · 0 评论 -
【剑指 Offer 58 - II. 左旋转字符串】(substring截取字符串)
分别截取0-k, k-len的字符串,并重新组合。原创 2022-10-25 22:33:28 · 62 阅读 · 0 评论 -
【剑指 Offer 58 - I. 翻转单词顺序】(split字符串分割)
对字符串按照“ ”进行分割,并将分割得到的数组倒序输出返回。原创 2022-10-25 21:03:10 · 67 阅读 · 0 评论 -
【剑指 Offer 57 - II. 和为s的连续正数序列】(list转int[])
设置两个指针i,j < target,如果i,j之间的数字之和等于target则加入该数据。原创 2022-10-25 18:52:38 · 65 阅读 · 0 评论 -
【剑指 Offer 57. 和为s的两个数字】
设置两个指针i,j,分别指向数组左右两端,如果nums[i] + nums[j] > target,j指针向左移动;反之i指针向右移动,直到 nums[i] + nums[j] = target。原创 2022-10-22 14:33:27 · 66 阅读 · 0 评论 -
【剑指 Offer 56 - II. 数组中数字出现的次数 II】
没有时间、空间复杂度的要求,那就用双重循环吧。原创 2022-10-22 14:02:46 · 81 阅读 · 0 评论 -
【剑指 Offer 56 - I. 数组中数字出现的次数】
将每个数字出现的次数统计在map中,将出现一次的数字返回。原创 2022-10-22 13:39:43 · 67 阅读 · 0 评论 -
【剑指 Offer 55 - II. 平衡二叉树】
一个节点的左右节点都是平衡二叉树,且左右节点的深度差不大于1,这个节点开始的树即为平衡二叉树。如果一个二叉树的每个节点开始的树都是平衡二叉树,这棵树就是平衡二叉树。原创 2022-10-22 12:38:23 · 58 阅读 · 0 评论 -
【剑指 Offer 55 - I. 二叉树的深度】(递归)
一个节点的深度等于它的左子树的最大深度和右子树的最大深度的最大值,再加上1。原创 2022-10-22 12:19:03 · 81 阅读 · 0 评论 -
【剑指 Offer 51. 数组中的逆序对】(归并排序)
【代码】【剑指 Offer 51. 数组中的逆序对】(归并排序)原创 2022-10-19 19:31:24 · 46 阅读 · 0 评论 -
【剑指 Offer 50. 第一个只出现一次的字符】
在alist中存放第一次出现的字符,在blist中存放出现大于一次的字符。最后返回alist中第一个字符即可。第一次使用HashMap存放出现一次的字符,调试发现在HashMap中,Key并不是按照存放先后顺序存储的,无法判断哪个是最先出现的。原创 2022-10-18 20:14:32 · 47 阅读 · 0 评论 -
【剑指 Offer 49. 丑数】(动态规划)
【代码】【剑指 Offer 49. 丑数】(动态规划)原创 2022-10-18 19:26:57 · 57 阅读 · 0 评论 -
【剑指 Offer 47. 礼物的最大价值】(动态规划 / 深度优先搜索)
要想提高运行效率,想到了使用动态规划。即每一个位置的最大值,等于它上边和左边中最大的数,再加上它的值。为了方便计算,构造maxValue[m+1][n+1], 其中maxValue[i][j]对应grid[i-1][j-1]。通过了部分测试用例,超出时间限制。原创 2022-10-17 18:43:51 · 72 阅读 · 0 评论 -
【剑指 Offer 46. 把数字翻译成字符串】(深度优先搜索)
能翻译成字母的数字只能是0~25,如果当前数字和下一个数字组合小于26,那么它们可以按照两个字母翻译,也可以按照一个字母翻译。原创 2022-10-16 19:15:51 · 89 阅读 · 0 评论 -
【剑指 Offer 44. 数字序列中某一位的数字】(数学 / 算法)
【代码】【剑指 Offer 44. 数字序列中某一位的数字】原创 2022-10-16 18:03:47 · 48 阅读 · 0 评论 -
【剑指 Offer 45. 把数组排成最小的数】(String按照字典序比较大小)
将int[ ]数组转为String[ ]数组,再将String数组按照组合的字典序排序。原创 2022-10-16 17:10:24 · 67 阅读 · 0 评论 -
【剑指 Offer 43. 1~n 整数中 1 出现的次数】(算法)
首先想到的是,将从1到n的数,每一个都转为字符串,数出其中1的个数,但是在测试用例:824883294中超出时间限制。原创 2022-10-11 19:58:24 · 68 阅读 · 0 评论 -
【剑指 Offer 42. 连续子数组的最大和】(动态规划)
最大是子数组和是前一个最大子数组和与当前数字中较大的值。原创 2022-10-10 18:33:21 · 175 阅读 · 0 评论 -
【剑指 Offer 41. 数据流中的中位数】(ArrayList数组排序)
设置一个动态数组,可以随时插入新的值。对数组进行排序后,可以计算中位数。原创 2022-10-09 19:58:30 · 89 阅读 · 0 评论 -
【剑指 Offer 40. 最小的k个数】
新建一个长度为k的数组ans,将数组arr的前k个数字加入到ans中。后面没遍历arr中的一个数字,找到当前ans中最大的数字,如果arr[i]小于ans中最大的数字,则替换掉。最终ans中的k个数字即为arr中最小的k各数。原创 2022-10-09 19:43:20 · 39 阅读 · 0 评论 -
【剑指 Offer 39. 数组中出现次数超过一半的数字】(HashMap)
统计数组中所有数字出现的次数,在所有数字中找到出现次数大于数组长度一半的数字。原创 2022-10-09 19:29:02 · 50 阅读 · 0 评论 -
【StringBuffer】
【StringBuffer】的基本用法原创 2022-10-09 17:02:28 · 636 阅读 · 0 评论 -
【剑指 Offer 38. 字符串的排列】(回溯 / 字符串的全排列 / 剪枝)
提交发现超过时间限制,而在本地,这个测试样例可以运行成功。原创 2022-10-09 11:25:02 · 54 阅读 · 0 评论 -
【剑指 Offer 37. 序列化二叉树】(字符串分割 / 深搜 / List移除元素)
【代码】【剑指 Offer 37. 序列化二叉树】(字符串分割 / 深搜 / List移除元素)原创 2022-10-08 20:04:38 · 48 阅读 · 0 评论 -
【剑指 Offer 36. 二叉搜索树与双向链表】
首先对二叉树中的节点进行中序遍历,将节点的数据存储在顺序列表list中。然后将顺序列表中的数据按照单向链表的形式组织起来,最后将单向链表连接为双向链表。原创 2022-10-08 19:26:17 · 131 阅读 · 0 评论 -
【剑指 Offer 35. 复杂链表的复制】
第一遍遍历链表,新建一条常规链表;第二次遍历找到需要找的random节点,并绑定在新链表上。原创 2022-10-08 19:01:14 · 86 阅读 · 0 评论 -
【剑指 Offer 34. 二叉树中和为某一值的路径】(深度优先搜索)
刚开始的代码中,直接使用ans.add(list),运行结果是错误的。单步调试发现在list递归回上一层以后,删掉list末尾的节点,ans中添加的list也随之删掉末尾的节点。这是因为list、newlist,以及ans中的list均指向同一片内存。为了解决这个问题,在添加的时候,每次都要new一个新的list。使用深搜的方法,查找到叶节点(左子树、右子树都为空),判断此时路径上各个节点的和是否等于target,如果等于,将路径(list)加入到ans中。原创 2022-09-30 15:44:54 · 140 阅读 · 0 评论 -
【剑指 Offer 33. 二叉搜索树的后序遍历序列】(判断后序序列是否为二叉搜索树)
【代码】【剑指 Offer 33. 二叉搜索树的后序遍历序列】原创 2022-09-30 13:32:00 · 202 阅读 · 0 评论 -
【剑指 Offer 32 - III. 从上到下打印二叉树 III】
这道题和上一道题【剑指 Offer 31 - II. 从上到下打印二叉树 II】类似,与之不同的是,这道题需要将偶数行的数据逆置。所以在偶数行对list进行逆置即可。原创 2022-09-30 11:31:01 · 189 阅读 · 0 评论