随笔分类 -  剑指offer

ooo
摘要:题目描述 给定一个每个元素都是升序数组的二维数组和一个target,判断target是否在数组中 返回boolean类型 思路分析 方法一: 遍历每个元素,判断是否相等 方法二:将数组拍平,也就是数组扁平化,之后在判断里面有没有该target 方法三:对每个子数组都是用二分查找法,去判断其中有没有 阅读全文
posted @ 2022-12-31 14:45 含若飞 阅读(41) 评论(0) 推荐(0)
摘要:题目描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 思路分析 之前已经完成了两条有序链表的排序,那么对于任意条有序链表的合并我们都可以借助之前的方法。 借助之前的函数,每次传递一条链表进去,最终返回出一条链表 代码参考 /* 借助于之前的合并两条有序链表的函数来完成, 每次传递 阅读全文
posted @ 2022-12-30 22:51 含若飞 阅读(46) 评论(0) 推荐(0)
摘要:题目描述 思路分析 做这道题我第一反应是用“记事本”,也就是将遍历过的节点存储起来,如果下次再遍历到这个节点,那么也就是环的入口节点。遍历节点,如果是遍历过的,那么就直接返回这个节点,否则就将这个节点存起来。理解起来思路比较容易,做起来也比较快。 后来在参考别人的代码时发现它们用的数学方法,我也不太 阅读全文
posted @ 2022-12-30 22:14 含若飞 阅读(47) 评论(0) 推荐(0)
摘要:题目描述 输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 思路 类似于交叉链表判断交点问题,同样的我们也可以使用之前的方法。先让第一条链表走到为空再让它走第二条链表,第二条链表同样 阅读全文
posted @ 2022-12-29 11:18 含若飞 阅读(35) 评论(0) 推荐(0)
摘要:题目描述 牛客原题 思路分析 把两个指针想象成两个小孩,比如我们要找到倒数第3个,共10个,先让fast跑3步,此时再与slow同时开始跑, 当fast跑到10时,slow就刚好跑到8,也就是倒数第三个。 代码参考 // 可以借助之前,追击的问题,借助返回倒数第k个节点的题的基础上 function 阅读全文
posted @ 2022-12-29 10:27 含若飞 阅读(39) 评论(0) 推荐(0)
摘要:题目描述 输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。 如果该链表长度小于k,请返回一个长度为 0 的链表。 思路分析 方法一:第一遍计算链表长度,第二遍从头递进len-k个 方法二:先让第一个人先跑 3 步,之后再和另一个在起点的人同时跑,当fast跑到终 阅读全文
posted @ 2022-12-28 20:03 含若飞 阅读(52) 评论(0) 推荐(0)
摘要:题目描述 删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次 代码参考 const deleteDuplicates = function (head) { //链表为空 if (head null) return head //链表不为空 let p = head 阅读全文
posted @ 2022-12-28 19:27 含若飞 阅读(32) 评论(0) 推荐(0)
摘要:题目要求 思路分析 对于链表类的题,其实大部分有一个万能的方法,就是遍历一次链表,将他们的节点放到数组中,将节点的next置空,使用数组的各种方法去操作链表,之后再拼接链表。不过这种方法仅局限于刷题,只能做到把题过了,可以理解为一种“逃课”,我个人还是不建议的,不过能用这种方法解出来题也是一种进步 阅读全文
posted @ 2022-12-26 22:17 含若飞 阅读(59) 评论(0) 推荐(0)
摘要:排列: 从n个数中选取m(m<=n)个数按照一定的顺序进行排成一个列,叫作从n个元素中取m个元素的一个排列。不同的顺序是一个不同的排列。从n个元素中取m个元素的所有排列的个数,称为排列数。 全排列: 从n个元素取出n个元素的一个排列,称为一个全排列。全排列的排列数公式为 时间复杂度: n个数的全排列 阅读全文
posted @ 2022-12-15 10:59 含若飞 阅读(1213) 评论(0) 推荐(0)
摘要:题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 思路 使用递归的思想, 阅读全文
posted @ 2022-11-02 22:16 含若飞 阅读(20) 评论(0) 推荐(0)
摘要:题目描述: 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 样例测试: 给定一个链表: 1->2 阅读全文
posted @ 2022-10-13 19:28 含若飞 阅读(29) 评论(0) 推荐(0)
摘要:题目描述 测试样例 示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 1->3->4, 2->6 ] 将它们合并到一个有序链表中得到。 1->1->2->3->4->4->5->6 阅读全文
posted @ 2022-10-13 19:09 含若飞 阅读(24) 评论(0) 推荐(0)