加载中...

08 2023 档案

摘要:# 【剑指Offer】剑指offer题目汇总 本文为《剑指Offer》刷题笔记的总结篇,花了两个多月的时间,将牛客网上《剑指Offer》的66道题刷了一遍,以博客的形式整理了一遍,这66道题属于相对基础的算法题目,对于刷题练手是很好的实践,接下来会继续回到LeetCode,争取每天拿出一个小时,刷一 阅读全文
posted @ 2023-08-29 23:46 bujidao1128 阅读(542) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】15、反转链表 **题目描述:** 输入一个链表,反转链表后,输出新链表的表头。 **解题思路:** 本题比较简单,有两种方法可以实现:(1)三指针。使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。将指针反转后,三个结点依次前移即可。(2)递归方法。同样可 阅读全文
posted @ 2023-08-29 23:37 bujidao1128 阅读(27) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】64、滑动窗口的最大值 **题目描述:** 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2, 阅读全文
posted @ 2023-08-24 22:20 bujidao1128 阅读(25) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】63、数据流中的中位数 **题目描述:** 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用Ge 阅读全文
posted @ 2023-08-24 22:08 bujidao1128 阅读(16) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】46、圆圈中最后剩下的数 **题目描述:** 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每 阅读全文
posted @ 2023-08-24 21:54 bujidao1128 阅读(16) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】45、扑克牌顺子 **题目描述:** LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王, 阅读全文
posted @ 2023-08-23 22:40 bujidao1128 阅读(55) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】42、和为S的两个数字 **题目描述:** 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 **输出描述:** 对应每个测试案例,输出两个数,小的先输出。 **解题思路:** 对于本题,比上一题简 阅读全文
posted @ 2023-08-23 22:33 bujidao1128 阅读(16) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】41、和为S的连续正数序列 **题目描述:** 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:1 阅读全文
posted @ 2023-08-23 22:27 bujidao1128 阅读(15) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】33、丑数 **题目描述:** 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 **解题思路:** 所谓一个数m是另一个数n的因子,是指n能被 阅读全文
posted @ 2023-08-22 23:58 bujidao1128 阅读(14) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】31、从1到n整数中1出现的次数 **题目描述:** 求出1-13的整数中1出现的次数,并算出100-1300的整数中1出现的次数?为此他特别数了一下1-13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题 阅读全文
posted @ 2023-08-22 23:55 bujidao1128 阅读(37) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】29、最小的K个数 **题目描述:** 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 **解题思路:** 本题最直观的解法就是将输入的n个整数排序,排序之后位于最前面的k个数就是最小的k个数,这取决于排 阅读全文
posted @ 2023-08-22 23:51 bujidao1128 阅读(17) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】11、二进制中1的个数 **题目描述:** 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 **解题思路:** 本题有以下两个解决方案: (1)**依次判断每一位**。判断的方法是先与1相与,为1则说明该位为1,为0说明该位为0,然后将1左移,再判断倒数第二位 阅读全文
posted @ 2023-08-21 23:58 bujidao1128 阅读(17) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】48、不用加减乘除做加法 **题目描述:** 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 **解题思路:** 本题同样是对发散思维能力的一个考察。首先,我们需要考虑是要求和却不能使用四则运算,那么还能用什么呢?除了四则运算以外,还可以进行计算 阅读全文
posted @ 2023-08-21 23:55 bujidao1128 阅读(19) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】47、求1+2+3+4+···+n **题目描述:** 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 **解题思路:** 本题本身没有太多的实际意义,但是可以对程序员的发散思维能力 阅读全文
posted @ 2023-08-21 23:53 bujidao1128 阅读(44) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】12、数值的整数次方 **题目描述:** 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 **解题思路:** 本题看似比较简单,是一个简单的指数运算,但需要完整的考虑到所有情况。首先,对于底数,如果底数为0,则0的 阅读全文
posted @ 2023-08-20 23:55 bujidao1128 阅读(16) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】10、矩形覆盖 **题目描述:** 我们可以用2 X 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2 X 1的小矩形无重叠地覆盖一个2 X n的大矩形,总共有多少种方法? **解题思路:** 我们可以以2 X 8的矩形为例。 ![](https://img2023.cnb 阅读全文
posted @ 2023-08-20 23:46 bujidao1128 阅读(24) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】9、变态跳台阶 **题目描述:** 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 **解题思路:** 当只有一级台阶时,f(1)=1;当有两级台阶时,f(2)=f(2-1)+f(2-2);一般情况下,当有n级台阶 阅读全文
posted @ 2023-08-20 23:38 bujidao1128 阅读(16) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】8、跳台阶 **题目描述:** 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 **解题思路:** 首先考虑最简单的情况,如果只有1级台阶,显然只有一种跳法。如果有两级台阶,就有两种跳法:一种是分两次跳,一 阅读全文
posted @ 2023-08-19 23:54 bujidao1128 阅读(19) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】7、斐波那契数列 **题目描述:** 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。假设n<=39。 **解题思路:** 斐波那契数列:0,1,1,2,3,5,8........ 总结起来就是:第一项是0,第二项是1,后续 阅读全文
posted @ 2023-08-19 23:46 bujidao1128 阅读(22) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】21、栈的压入、弹出序列 **题目描述:** 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1 阅读全文
posted @ 2023-08-19 23:41 bujidao1128 阅读(21) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】20、包含min函数的栈 **题目描述:** 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 **解题思路:** 解法一:使用两个stack,一个为数据栈,另一个为辅助栈。数据栈用于存储所有数据,每次压栈的最小元素(之前的 阅读全文
posted @ 2023-08-18 23:59 bujidao1128 阅读(18) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】5、用两个栈实现队列 **题目描述:** 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 **解题思路:** 本题的基本意图是:用两个后入先出的栈来实现先入先出的队列。对于这个问题,我们可以通过一个实例来进行具体分析。不难得出相应的规律:有 阅读全文
posted @ 2023-08-18 23:55 bujidao1128 阅读(17) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】66、机器人的运动范围 **题目描述:** 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 阅读全文
posted @ 2023-08-18 23:52 bujidao1128 阅读(25) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】65、矩阵中的路径 **题目描述:** 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 阅读全文
posted @ 2023-08-17 23:55 bujidao1128 阅读(19) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】62、二叉搜索树的第k个结点 **题目描述:** 给定一棵二叉搜索树,请找出其中的第k小的结点。例如(5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 **解题思路:** 本题实际上比较简单,主要还是考察对树的遍历的理解,只要熟练掌握了树的三种遍历方式及 阅读全文
posted @ 2023-08-17 23:48 bujidao1128 阅读(20) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】61、序列化二叉树 **题目描述:** 请实现两个函数,分别用来序列化和反序列化二叉树。 **解题思路:** 序列化是指将结构化的对象转化为字节流以便在网络上传输或写到磁盘进行永久存储的过程。反序列化是指将字节流转回结构化的对象的过程,是序列化的逆过程。 受第4题:重建二叉树的 阅读全文
posted @ 2023-08-17 23:40 bujidao1128 阅读(16) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】60、把二叉树打印成多行 **题目描述:** 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 **解题思路:** 本题可类比第22题:从上往下打印二叉树[https://www.cnblogs.com/bujidao1128/p/17627566.html]( 阅读全文
posted @ 2023-08-16 23:52 bujidao1128 阅读(18) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】59、按之字形顺序打印二叉树 **题目描述:** 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 **解题思路:** 这道题仍然是二叉树的遍历,相当于层次遍历,可以和第22题:从上 阅读全文
posted @ 2023-08-16 23:46 bujidao1128 阅读(22) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】58、对称的二叉树 **题目描述:** 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 **解题思路:** 本题判断一棵树是不是对称的,和第18题可以对比分析:二叉树的镜像,和LeetCode第101题:101. 阅读全文
posted @ 2023-08-16 23:40 bujidao1128 阅读(19) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】57、二叉树的下一个结点 **题目描述:** 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 **解题思路:** 本题解决起来并不是很困难,主要是分析清楚所有可能的不同情况。对于中序遍历序列 阅读全文
posted @ 2023-08-15 23:57 bujidao1128 阅读(20) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】39、平衡二叉树 **题目描述:** 输入一棵二叉树,判断该二叉树是否是平衡二叉树。这里的定义是:如果某二叉树中任意结点的左、右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 **解题思路:** 首先对于本题我们要正确理解,一般情况下,平衡二叉树就是AVL树,它首先是二叉搜 阅读全文
posted @ 2023-08-15 23:55 bujidao1128 阅读(27) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】57、二叉树的下一个结点 **题目描述:** 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 **解题思路:** 本题相对比较简单。根据二叉树深度的定义,我们有以下理解:如果一棵树只有一个结点,那么它的深 阅读全文
posted @ 2023-08-15 23:49 bujidao1128 阅读(39) 评论(0) 推荐(0) 编辑
摘要:**题目描述:** 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 **解题思路:** 首先要理解此题目的含义,在双向链表中,每个结点都有前后两个指针;二叉树中,每个结点都有两个指向子结点的左右指针,同时,二叉搜索树树也是一种排序的 阅读全文
posted @ 2023-08-14 23:49 bujidao1128 阅读(19) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】 24、二叉树中和为某一值的路径 **题目描述:** 输入一颗二叉树的根结点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) **解题思路:** 阅读全文
posted @ 2023-08-14 23:42 bujidao1128 阅读(19) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】23、二叉搜索树的后序遍历序列 **题目描述:** 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 **解题思路:** 对于后续遍历序列,序列的最后一个值一定是树的根结点,而由二叉搜索树 阅读全文
posted @ 2023-08-14 23:35 bujidao1128 阅读(26) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】22、从上往下打印二叉树 **题目描述:** 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 **解题思路:** 本题实际上就是二叉树的层次遍历,深度遍历可以用递归或者栈,而层次遍历很明显应该使用队列。同样我们可以通过一个例子来分析得到规律:每次打印一个结点时,如果该结 阅读全文
posted @ 2023-08-13 23:59 bujidao1128 阅读(18) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】18、二叉树的镜像 **题目描述:** 操作给定的二叉树,将其变换为原二叉树的镜像。 **解题思路:** 求一棵树的镜像的过程:先前序遍历这棵树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。当交换完所有的非叶结点的左、右子结点后,就可以得到该树的镜像。 如下面的例 阅读全文
posted @ 2023-08-13 23:55 bujidao1128 阅读(21) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】17、树的子结构 **题目描述:** 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) **解题思路:** 要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步,在树A中找到和树B的根结点值一样的结点R;第二步,判断树A中 阅读全文
posted @ 2023-08-13 23:52 bujidao1128 阅读(21) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】4、重建二叉树 **题目描述:** 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回根结点。 阅读全文
posted @ 2023-08-12 23:55 bujidao1128 阅读(23) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】56、删除链表中重复的结点 **题目描述:** 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。 **解题思路:** 关于链表的大多数题目还是比较简单的 阅读全文
posted @ 2023-08-12 23:51 bujidao1128 阅读(24) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】55、链表中环的入口结点 **题目描述:** 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 **解题思路:** 本题是一个比较典型的链表题目,难度适中。首先,对于大多人来说,看到这道题是比较开心的,因为判断一个链表是否存在环的方法,基本上大家都知道 阅读全文
posted @ 2023-08-12 23:46 bujidao1128 阅读(22) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】36、两个链表的第一个公共结点 **题目描述:** 输入两个链表,找出它们的第一个公共结点。 **解题思路:** 本题首先可以很直观的想到蛮力法,即对链表1(假设长度为m)的每一个结点,遍历链表2(假设长度为n),找有没有与其相同的结点,这显然复杂度为O(mn)。 进一步考虑, 阅读全文
posted @ 2023-08-11 23:55 bujidao1128 阅读(19) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】25、复杂链表的复制 **题目描述:** 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。 **解题思路:** 阅读全文
posted @ 2023-08-11 23:44 bujidao1128 阅读(20) 评论(0) 推荐(0) 编辑
摘要:# 【剑指Offer】16、合并两个排序的链表 **题目描述:** 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 **解题思路:** 首先需要判断几个特殊情况,即判断输入的两个指针是否为空。如果第一个链表为空,则直接返回第二个链表;如果第二个链表为空, 阅读全文
posted @ 2023-08-11 23:32 bujidao1128 阅读(14) 评论(0) 推荐(0) 编辑
摘要:# 《Effective C++ 改善程序与设计的55个具体做法》读书笔记 ## 让自己习惯C++ **条款01 视C++为一个语言联邦** * `C` * `Object-Oriented C++` * `Template C++` * `STL` * `C++`高效编程守则视情况而变化,取决于你 阅读全文
posted @ 2023-08-10 23:59 bujidao1128 阅读(15) 评论(0) 推荐(0) 编辑
摘要:# C++面试八股文:如何避免死锁? 某日二师兄参加XXX科技公司的C++工程师开发岗位第31面: > 面试官:什么是锁?有什么作用? > 二师兄:在C++中,锁(Lock)是一种同步工具,用于保护共享资源,防止多个线程同时访问,从而避免数据竞争和不一致。 > 面试官:有哪些锁? > 二师兄:从种类 阅读全文
posted @ 2023-08-10 23:51 bujidao1128 阅读(38) 评论(0) 推荐(0) 编辑
摘要:# C++面试八股文:如何实现一个strncpy函数? 某日二师兄参加XXX科技公司的C++工程师开发岗位第31面: > 面试官:`strcpy`函数使用过吧? > 二师兄:用过。 > 面试官:这个函数有什么作用? > 二师兄:主要用做字符串复制,将于字符从一个位置复制到另一个位置。 > 面试官:` 阅读全文
posted @ 2023-08-10 23:43 bujidao1128 阅读(43) 评论(0) 推荐(0) 编辑