剑指offer
在日常生活的点滴中,寻找生命的意义
白劷
求而不得,不求而得
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer JZ7 重建二叉树
想要重建一棵二叉树,得知道这棵树的先序和中序遍历序列,或者是中序和后序遍历序列,这是数据结构的基础知识。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。这道题考察的是二叉树根据先序、中序来重建二叉树的知识,这是数据结构二叉树部分的基础考点,清楚这个推导过程是先决条件。③这个节点把中序序列分成了左右两部分,对应二叉树的左右子树,把这个子数组用java的库函数建立对应的子树;给定节点数为 n 的二叉树的。原创 2024-09-25 21:45:39 · 338 阅读 · 1 评论 -
建立一棵二叉树
这段代码写来仅自用,如有需要,在移植到自己本地的时候需要微调。原创 2024-09-21 15:30:25 · 308 阅读 · 0 评论 -
剑指offer JZ54 二叉搜索树的第k个节点
首先明确,二叉搜索树,也叫二叉排序树,即左子树的节点的值全都小于根节点,右子树的节点值全都大于根节点,每颗子树也都遵从这个规则。那么问题就很简单了:要找第k小的节点,就是找经过中序遍历后的序列的第k个位置的节点。网站上标的难度为中等难度,但其实着重考察的是对二叉搜索树,这种数据结构特性掌握的情况,其中用到了中序遍历,其他的像先序遍历、后续遍历都是需要掌握的,对应于不同的情况。该二叉树所有节点按结点值升序排列后可得[2,3,4,5,6,7,8],所以第3个结点的结点值为4,故返回对应结点值为4的结点即可。原创 2024-09-21 15:08:00 · 404 阅读 · 0 评论 -
剑指offer JZ23 链表中环的入口结点
也就是说,如果以相同的速度,让两个指针,一个从头开始遍历到相遇节点,一个从相遇节点在环中遍历,最后到相遇的节点走的是相同的距离,而因为此时速度相同,所以其中y这个距离,就是重复走的距离,那么他们第一次相遇的点就是环的入口节点了。那么在这个过程中,快指针一共走了x+n*(y+z)+y,慢指针共走了x+m*(y+z)+y,而相同的时间,fast是slow 速度的2倍,所以距离也是2倍,故:x+n*(y+z)+y=2(x+m*(y+z)+y),推导得出(②在有环的链表中找到环的入口。2.双指针(推荐掌握)原创 2024-09-09 16:29:16 · 335 阅读 · 0 评论 -
剑指offerJZ24 反转链表
简单题,主要考察链表基础,我们在建一个链表时,通常有尾插法和头插法建表(此处不做详细介绍)。简单来说,尾插法可以得到一个按照插入顺序的链表,头插法可以得到一个逆置的链表,所以此题可以在遍历原链表的时候,以头插法建一个新表,而得到的新表,就是需要的答案。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。要求:空间复杂度 O(1),时间复杂度 O(n)。数据范围: 0≤n≤10000≤n≤1000。如当输入链表{1,2,3}时,原创 2024-09-01 17:36:12 · 257 阅读 · 0 评论 -
数组中重复的数字
题目描述: 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n <= 100000 思路: 来自于剑指offer,申请一个初始元素全为0的数组arr[],遍历原先数组nums[],用nums[]存的值,来对应申请的arr[]的下标的值,每出现一次.原创 2021-05-09 23:57:36 · 403 阅读 · 0 评论
分享