刷题
文章平均质量分 57
刷题的总结
追梦少年ML
程序改变世界,代码成就未来。
展开
-
三叉树--北航
题目描述:题目链接Time Limit: 1000 msMemory Limit: 256 mb一个关于三叉树的题目,小于100的值代表树叶,大于100的值为分支点,建树的过程是水平方向建树,输入格式:先输入n,代表有n组数据,接下来n行,输入4个数,第一个数代表根节点,接下来分别代表三个子节点,-1代表子节点不存在,输入的顺序按照层次遍历的次序。接下来,要求寻找叶子节点的最短路径,最短路径是指不经过重复的边。输入方式,首先输入一个值m,代表m行,接下来m行输入m个叶子节点和对应的优先级,要求按原创 2021-07-06 23:43:47 · 1257 阅读 · 0 评论 -
N皇后问题
在LeetCode中有N皇后问题,其中有让求n皇后解决方案的个数,也有让求n皇后解决方案的棋盘展示。其实二者的算法是一样的,只是中间的处理过程不一样。下面我就这两道题写下我的思路。N皇后传送门题解:首先遇到N皇后问题,首先要想到用回溯法。递归的层数是N,每一层递归就解决每一行的皇后放在哪。所以我们要每一层递归中用一个循环,来看把皇后放在那一列合适(没有皇后攻击),然后就把皇后放在该位置,然后进行下一层递归。递归完后,撤销放置在该地方的皇后(回溯),查找下一个可能的位置。代码:/* * @l原创 2021-01-29 21:58:26 · 122 阅读 · 0 评论 -
三数之和
题目链接题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]题解一:首先我们可以暴力求解,即使用3个循环,显然时间复杂度为O(n原创 2021-01-26 17:36:40 · 134 阅读 · 0 评论 -
采药
题目链接题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是辰辰,你能完成这个任务吗?输入格式第一行有 22 个整数 TT(1 \le T \le 10001≤T原创 2021-01-25 17:57:42 · 325 阅读 · 0 评论 -
滑雪
题目链接题目:Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑原创 2021-01-23 23:23:51 · 146 阅读 · 0 评论 -
快乐数
题目链接题目:编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。题解一:把每次得到的数保持到容器中,如果得到的数在容器中已存在,则表明出现循环,返回false。如果得到的数为1,则表明此数为快乐数,返回true。代码一:class Sol原创 2021-01-22 22:52:17 · 123 阅读 · 0 评论 -
寻找峰值
题目链接题目:峰值元素是指其值大于左右相邻值的元素。给你一个输入数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。题解一:首先我们直接想到的就是遍历一遍,找到大于左右的两个数直接返回其索引。因为需要遍历数组,所以此时的时间复杂度为O(n)。代码一:class Solution {public: int findPeakElement(vector<int原创 2021-01-22 21:42:04 · 269 阅读 · 0 评论 -
剑指 Offer 43. 1~n整数中1出现的次数
题目:剑指 Offer 43. 1~n整数中1出现的次数题意:输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例:题解一:首先看到这道题,我们会想到遍历从1到n,然后计算每一个数中1的个数,然后相加即可。这样的时间复杂度是O(nlogn),(从1遍历到n,时间复杂度为O(n),计算每一个数中1的个数,时间复杂度为O(logn),所以总体的时间复杂度为O(nlogn))。这样我们能轻原创 2020-09-23 23:03:24 · 251 阅读 · 0 评论 -
关于某种二叉树的生成
引言:最近在刷题刚才中,二叉树的题还是相对来说比较简单的。那是因为二叉树的各类题型都是相关的,都是有迹可循。在二叉树的各种遍历是最简单的,而我在刷题过程中却碰到了一些二叉树的生成,看到题意后感觉无从下手,所以我就写下这篇文章来加深自己对这类题的印象。题目1:所以可能的满二叉树题目链接**题目描述:**满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。返回包含 N 个结点的所有...原创 2020-04-17 11:42:03 · 231 阅读 · 0 评论 -
二叉搜索树与双向链表
引言:当刷到这一题时,我一开始感到无从下手。看了一下题解,瞬间恍然大悟。因此写下这篇题解,一方面希望自己对这道题有深刻的认识,另一方面,帮助一些和我一样看到此题无从下手的同学。题目:二叉搜索树和循环链表题目链接输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将...原创 2020-04-11 23:17:01 · 185 阅读 · 0 评论 -
圆和矩形是否有重叠
引言:写这篇博客主要是把它当做一个云笔记,顺便帮助一下做这道题没有思路的人。因为之前想的比较复杂,现在看这道题感觉是如此简单…题目描述:给你一个以 (radius, x_center, y_center) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2),其中 (x1, y1) 是矩形左下角的坐标,(x2, y2) 是右上角的坐标。如果圆和矩形有重叠的部分,请你返回 T...原创 2020-04-10 11:43:36 · 1231 阅读 · 0 评论 -
英文字母大小写转换
如何实现英文大小写转换呢?相信大家都会。无非就是for循环,然后再if判断。如:(str中有大写也有小写)for(i=0;i<str.size();i++)//大写小写都变大写{ if(str[i]>='a'&&str[i]<='z') { str[i]-=32; }}for(i=0;i<str.size();i++)//大写小写都变小写...原创 2020-03-24 22:27:29 · 1697 阅读 · 0 评论 -
按摩师
题目:按摩师题目链接题目描述:一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。示例:题解:这道题可以用递归和动态规划来写(虽然我用递归超时了,但是该题还是可以练习递归思维的)。首先说一下递归的解法。用递归首先要找到递归出...原创 2020-03-24 20:45:58 · 487 阅读 · 0 评论 -
岛屿数量(力扣)
题目:岛屿数量题目链接题目描述:给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例:题解:该题和扫雷问题是相似的,甚至比扫雷问题简单,但都是用到了深度优先搜索。遍历岛屿二维向量,发现1时,深搜,把1的上下左右仍是1的置0,并继续深搜,直至二维向量全为0...原创 2020-03-24 15:16:28 · 666 阅读 · 0 评论 -
扫雷游戏(力扣)
题目:扫雷游戏题目链接题目描述:让我们一起来玩扫雷游戏!给定一个代表游戏板的二维字符矩阵。 ‘M’ 代表一个未挖出的地雷,‘E’ 代表一个未挖出的空方块,‘B’ 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字(‘1’ 到 ‘8’)表示有多少地雷与这块已挖出的方块相邻,‘X’ 则表示一个已挖出的地雷。现在给出在所有未挖出的方块中(‘M’或者’E’)的下一个点击...原创 2020-03-24 11:32:50 · 317 阅读 · 0 评论 -
火车进站
题目:火车进站题目链接题目描述:给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号。要求以字典序排序输出火车出站的序列号。输入描述:有多组测试用例,每一组第一行输入一个正整数N(0<N<10),第二行包括N个正整数,范围为1到9。输出描述:输出以字典序从小到大排序的火车出站序列号,每个编号以空格隔开,每...原创 2020-03-25 09:29:27 · 2262 阅读 · 0 评论 -
201301 JAVA 题目2-3级(牛客网)
题目:201301 JAVA 题目2-3级题目链接题目描述:请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。示例输入:2 2示例输出:6题解:此题可以有递归求解。递归出口:当到达终点使返回,并把步数加1。如果棋子越界,...原创 2020-03-13 21:26:29 · 222 阅读 · 0 评论 -
放苹果(牛客网)
题目:放苹果题目链接题目描述:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。输入每个用例包含二个整数M和N。0<=m<=10,1<=n<=10。样例输入7 3样例输出8题解:把M个同样的苹果放在N个同样的盘子里,有两种情况。1.至少有一个空盘子。2.没有空盘子。1.当至...原创 2020-03-09 20:26:49 · 448 阅读 · 0 评论 -
旋转矩阵(LeetCode)
题目:旋转矩阵题目链接题目描述:给定一幅由N × N矩阵表示的图像,其中每个像素的大小为4字节,编写一种方法,将图像旋转90度。不占用额外内存空间能否做到?示例输入:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]]示例输出:原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]题解要想让矩阵旋转90度,可以先让矩...原创 2020-03-09 20:09:28 · 804 阅读 · 0 评论 -
蛇形矩阵(牛客网)
蛇形矩阵题目链接题目描述:题目说明蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。样例输入5样例输出1 3 6 10 152 5 9 144 8 137 1211题解:首先要选择一个容器来容纳矩阵,我就选择向量啦。当输入n,首先创建一个n*n的二维向量。然后用一个while循环来形成蛇形矩阵,然后对之输出。不要忘了在每一次输入n前清空二维向量哦。。。。代码:#...原创 2020-03-13 21:26:58 · 554 阅读 · 0 评论 -
跳台阶
跳台阶题目链接题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。解法描述:要想跳上number级台阶,青蛙可以一次跳1台阶,也可以一次跳2台阶。我们可以分情况讨论,以2的个数来分,跳2台阶的次数s可以为0,1,2,…,number/2;拿number=5举例,当s=0时,有C(0,5)种情况,s=1时,有C(1...原创 2020-03-09 20:25:10 · 146 阅读 · 0 评论 -
最长同值路径
最长同值路径题目力扣链接题目描述给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。实例1:输入:输出 : 2输入:输出 : 2题解:看到二叉树的题,首先要想到递归。首先,要想得到等值路径,需要该节点的左孩子的等值路径和该节点右孩子的等值路径。若该节点的值和左右孩子...原创 2019-12-03 19:14:22 · 195 阅读 · 0 评论 -
环形链表
环形链表力扣题目链接题目描述给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], po...原创 2019-12-01 19:25:04 · 244 阅读 · 0 评论 -
反转链表
反转链表力扣题目链接题目描述反转一个单链表。实例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL看到反转链表这道题,首先要想到递归。解法一:(递归)class Solution {public: ListNode* reverseList(ListNode* he...原创 2019-12-01 19:06:28 · 111 阅读 · 0 评论 -
全排列
前言:全排列问题会在各个问题中用到,你是否还在为全排列问题而发愁呢?下面我将清晰地讲解全排列的问题求解。题解:首先对1,2,3进行全排列,我们会得到6个序列。分别为1 2 3 , 1 3 2 , 2 1 3 , 2 3 1 , 3 1 2, 3 2 1我们对这个例子可以看出,我们可以用递归来求解。首先把每个数和第一个数交换然后对后面的n-1个元素进行全排列,如此递归下去,一直到进行...原创 2020-03-16 11:54:25 · 152 阅读 · 0 评论 -
二叉搜索树的后序遍历序列(剑指offer)
二叉搜索树的后序遍历序列题目链接题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。题解:先在向量中找到左右子树的分界线,然后如果左子树的节点值大于根节点的节点值,那么就返回false。然后再递归判断根节点的左右子树是否为二叉搜索树。代码:class Solution {public:...原创 2020-03-13 21:25:31 · 168 阅读 · 0 评论 -
二叉树的镜像
二叉树的镜像题目链接题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。示例输入:题解:二叉树的题都可以用递归来求解。当二叉树为空或者只有一个节点,那么就直接返回即可。否则,就从上至下交换兄弟节点。代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNo...原创 2020-03-13 21:24:57 · 91 阅读 · 0 评论 -
树的子结构(剑指offer)
树的子结构题目链接题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)题解:要求B是不是A的子结构,首先要写一个判断B是否为 A’ 的子结构的函数,然后再在整个二叉树A中找,是否含有 A’ 这样的结构。代码:/*struct TreeNode { int val; struct TreeNode *left; struct...原创 2020-03-13 21:25:13 · 145 阅读 · 0 评论 -
合并两个排序的链表(剑指offer)
合并两个排序的链表题目链接题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。题解:对于链表这类题,用递归去解题是很常见的。比如反转链表。而这个题依然可以用递归去解题。先从两个链表头中选一个较小的作为合并后的链表头,然后把这个链表中剩下的链表和另一个链表合并,然后接到此节点后面。如此递归求解即可。代码:/*struct ListNo...原创 2020-03-13 21:25:48 · 220 阅读 · 0 评论 -
杨辉三角
杨辉三角题目链接题目描述给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]题目分析:(c++描述)想要生成杨辉三角的前numRows行,那么先生成此形状的二维向量(把初始值设为1),然后利用杨辉三角的性质,从第三行开始result[i][j+1...原创 2020-01-30 14:17:12 · 250 阅读 · 0 评论 -
灯泡开关
灯泡开关题目链接题目描述:初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。 找出 n 轮后有多少个亮着的灯泡。示例:输入: 3输出: 1解释:初始时, 灯泡状态 [关闭, 关闭, ...原创 2019-12-21 16:11:31 · 182 阅读 · 0 评论 -
路径总和 III
路径总和 III题目链接题目描述:给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:题解:先使用一个全局变量pathsum来表示路径数,然后从一个给定的...原创 2019-12-20 19:37:26 · 101 阅读 · 0 评论 -
全排列
全排列力扣题目链接题目描述:给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]题解:全排列问题我们可以利用递归函数进行求解。即先让第一个数遍历数组中所以数,然后对后面的n-1个数进行递归。直到执行到递归出口(即对一个数进行全排列)...原创 2019-12-07 21:52:21 · 116 阅读 · 0 评论 -
有序链表转换二叉搜索树
有序链表转换二叉搜索树力扣题目链接题目描述给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:题解:二叉搜索树的特点为中序遍历得到的是一个递增序列。而给定的单链表是递增的,所以二叉搜索数的根就是链表的中点。在单链表中如何得到中点呢?首先要想到用快慢指针,一开始两者同时...原创 2019-12-05 23:40:57 · 151 阅读 · 0 评论 -
环形链表 II
环形链表 II力扣题目链接题目描述给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例1:输入:head = [3,2,0,-4], pos = 1输出:tail connects ...原创 2019-12-04 21:07:03 · 131 阅读 · 0 评论