随笔分类 -  leetcode题目

上一页 1 ··· 12 13 14 15 16
记录leetcode刷题做题笔记
摘要:题目: 思路: 【1】拿到树或者链表的话其实少不了是要遍历的,而树的遍历存在三种:先序遍历(根左右),中序遍历(左根右),后序遍历(左右根)。而我们发现如果是数字的话其实中序遍历是最符合我们的要求的。如: 【2】基于中序遍历,将数据按顺序放入数组中。 【3】进行优化:1.首先题目求得是第几个,所以不 阅读全文
posted @ 2023-02-17 15:37 忧愁的chafry 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】简单思路:如何两个链表是有序的,且要合并,那么情况分为: 1)其中一条链表是空的,返回另外一条 2)两条都不为空: 【1】当两条都存在数据时,要进行比较,然后取小的塞入新链表中。 【2】当一条遍历尽了,那么另一条要自动接上去 代码展示: 简单思路的实现: //时间0 ms击败1 阅读全文
posted @ 2023-02-17 12:26 忧愁的chafry 阅读(10) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】一种是比较好写的,采用辅助空间,一般采用队列,因为先进先出,方便操作: 1.将节点塞入队列 2.循环判断队列是否为空,不为空则要进行处理 3.此时队列里面的数据量为一组数据 4.将这一组数据的节点都拿出来,将值组合成新数组,且判断左节点是否为空,不为则塞入队列,再判断右节点(基 阅读全文
posted @ 2023-02-16 18:19 忧愁的chafry 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】自而上的递归 代码展示: 自而上的递归的方式: //时间0 ms击败100% //内存41.3 MB击败46.46% /** * Definition for a binary tree node. * public class TreeNode { * int val; * 阅读全文
posted @ 2023-02-16 17:52 忧愁的chafry 阅读(15) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】自顶向下的递归 【2】自底向上的递归 代码展示: 自底向上的递归的方式: //时间0 ms击败100% //内存41.1 MB击败52.64% class Solution { public boolean isBalanced(TreeNode root) { return 阅读全文
posted @ 2023-02-16 17:30 忧愁的chafry 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】由于输入的是int整数,那么其实并不一定要使用函数转成二进制的字符串,通过位移的方式一样可以达到像二进制一样的判断,但这里会有些问题,因为位移存在,左位移和右位移,首先左移的话是存在向末尾补0的操作,而右移的话,如果是正数,是会在高位补0,而负数则会补1。但基于条件给定正数,故 阅读全文
posted @ 2023-02-16 16:26 忧愁的chafry 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】由于题目没有说明输入是无序的还是有序的,默认是无序,然而在无序中,如【4,7,5,9,2】我们比较难准确的知道是否需要鬼来填充。所以考虑将数组先进行排序。排完序之后就好处理很多了,针对顺序数组,我们知道如果出现重复的数字必然不可能成为顺子。那么其他的就要看间隔的数字与鬼牌的数量 阅读全文
posted @ 2023-02-15 14:19 忧愁的chafry 阅读(36) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】暴力的双指针循环处理的方式:基于题目限制,至少含有两个数,众所周知,x = x/2 + x/2,而在编程中会出现小数被遗弃的情况,所以当x=15时,一半是7,而7+8=15,故应该将边界值调大一些 limit = target/2 + 1; 然后基于数学公式计算多个有序的数的和 阅读全文
posted @ 2023-02-15 01:58 忧愁的chafry 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】最简单的直接遍历的方式:这个思路是基于,首先一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内,这就说明了这是一串连续的数字,且会与下标有一定联系,当不缺失的时候,下标与数值一 一对应,故直接遍历且比对下标即可。 【2】基于最简单的方式的理 阅读全文
posted @ 2023-02-15 01:04 忧愁的chafry 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】使用辅助变量,和构建使用的偏移数据组合,然后在单次循环中对数据进行塞入 【2】不使用辅助空间,按照模拟的思维,使用四个变量记录范围值,然后按照逻辑遍历塞入数组,其中需要特殊处理的便是最后形成一行或一列的情况。 代码展示: 使用辅助变量进行单循环: //时间3 ms击败20.1% 阅读全文
posted @ 2023-02-14 15:41 忧愁的chafry 阅读(18) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】本身在于边界的判断,但是对于一开始添加一个节点这个做法虽然能过,但是不太严谨,应该采取后面那种,因为如果链表的目标值就是0的话,那么第一种就坐蜡了。 代码展示: //时间0 ms击败100% //内存41 MB击败54.94% /** * Definition for sing 阅读全文
posted @ 2023-02-14 00:54 忧愁的chafry 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】一种是先遍历数组,记录字符的个数,然后第二次遍历的时候取出,因为限制小写字母可以考虑int的26个数组记录,节约开销。 【2】当然第二种是遍历字符,因为只有26个,所以只需要遍历26次,但是在里面设计到两次查找,这种对于数据量大的时候是起到很大的优化。减少遍历的时间。 代码展示 阅读全文
posted @ 2023-02-13 18:55 忧愁的chafry 阅读(7) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】这道题本身直接用暴力的方式好像都能过,只要计算出最大值可以用函数的话就:(int)(Math.pow(10, n) - 1); 【2】但是这里其实没有考虑大数,就是超出Int范围之类的这种,这种就需要使用字符串。 代码展示: 普通遍历方法: //时间1 ms击败73.8% // 阅读全文
posted @ 2023-02-13 18:09 忧愁的chafry 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】利用排序来完成,优先将数组排序,那么数组中间的值肯定是存在最多的元素。【但是由于考虑到最优的排序算法的时间复杂度也是O(N*longN),其实不满足进阶条件,但是可以解决问题】 【2】利用额外的存储空间来解决,也就是使用Map来进行存储数值,然后将超过半数的那个元素拿出来。【这 阅读全文
posted @ 2023-02-13 17:27 忧愁的chafry 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】借用辅助空间的方式:利用set存储其中的一条链表,当另一条链表遍历的时候在set判断是否已存入。 【2】利用倒叙的思维,由于相交的部分都是末尾,所以可以考虑剪刀长链表的较长部分,因为这部分绝对不可能相交,如A链表是5,B链表是8,那么相交的部分是小于等于5的。 【3】基于步骤2 阅读全文
posted @ 2023-02-13 17:22 忧愁的chafry 阅读(9) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】基于双循环暴力破解的方式也是可以做的,基于辅助空间Set的做法也是可以做的(单次遍历,碰到set里面能够组合成结果的就将两个返回) 【2】循环加双指针的处理方式 代码展示: 循环加双指针的处理方式: //时间1 ms击败99.72% //内存60.3 MB击败35.14% // 阅读全文
posted @ 2023-02-13 16:04 忧愁的chafry 阅读(13) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】动态规划,利用F(N)=F(N-1)+F(N-2)的公式。 【2】矩阵快速幂(重点难以理解) 【3】通项公式:根据递推方程 f(n)=f(n−1)+f(n−2),我们可以写出这样的特征方程:x^2 = x + 1。 【但这种只限于爬楼梯,因为如果要除某个数的话直接拿结果除是不合 阅读全文
posted @ 2023-02-13 14:25 忧愁的chafry 阅读(25) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】简单点的思路就是先排序,再取出K个最小的值,如果没有做限制的话,使用sort函数就好了,如果限制函数的话,其实可以考虑快速排序和选择排序,快排的话不一定比选择排序更优,如果K很小的话其实选择排序会比快排更快,不过冒泡和选择两种排序的时间复杂度都是O(N)。但是解答时候明显使用快 阅读全文
posted @ 2023-02-11 16:14 忧愁的chafry 阅读(16) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】其实这道题和 19. 删除链表的倒数第 N 个结点 这题差不多,不过一个是要删除但是返回的依旧是首节点,而本体要求的是返回倒数第几位的节点。 【2】其次这道题的限制条件没有给出的很明确,如果K比链表长度还大呢。貌似都不需要处理,尬的一批。 代码展示: //时间0 ms击败100 阅读全文
posted @ 2023-02-10 17:12 忧愁的chafry 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题目: 思路: 【1】题目要求也简单,奇数在左半边,偶数在右半边,那么基于此,采用双指针才是最快,也是最省事的,毕竟只要遍历一次(这里指的是总量,但是代码用的循环会多一些)。拿到就将两个交换,然后各自移动一步,进行下一次循环。 【2】当然还有两次遍历的方法,但是本身就是基于双指针+一次遍历演化来的, 阅读全文
posted @ 2023-02-10 16:50 忧愁的chafry 阅读(11) 评论(0) 推荐(0) 编辑

上一页 1 ··· 12 13 14 15 16