刷题
主要是各种程序题目
Adward.xi
这个作者很懒,什么都没留下…
展开
-
剑指offer面试题34:在二叉树中和为某一值的路径
满足就加入最终的容器中,然后注意这里要对加入的值进行一个删除,达到回溯的目的。容器中,然后当到达了叶子结点就判断容器中的值是否满足。就是用深度优先遍历,直接将路径上的值存在一个。路径总和等于给定目标和的路径。是指没有子节点的节点。原创 2024-03-12 10:53:58 · 262 阅读 · 0 评论 -
剑指offer面试题32:从上到下打印二叉树
每一次打印一个节点的时候,如果该节点有子节点,则把该节点的子节点放到一个队列的末尾,接下来到队列的头部取出最早进入队列的节点,重复前面打印操作,直到队列中的元素全部打印完了。请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二次按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行一次类推。从上到下按照层打印二叉树,同一层的节点按照从左到右的顺序打印,每一层打印到一个容器里。从上到下打印出二叉树的每个节点,通一层的节点按照从左到右的顺序打印。如何广度优先遍历一幅有向图?原创 2024-03-11 15:57:48 · 401 阅读 · 0 评论 -
剑指offer面试题31:栈的压入、弹出序列
这个题目我们可以模拟整个入栈和出栈的操作,我们按照建立一个栈,按照pushed序列压入栈,并且判断是否与popped序列的首元素是否相同,如果相同就把这个元素从栈内弹出,并观察下一个popped元素判断与现在的栈元素首元素是否相同,如果是则循环操作,直到遇到与栈首元素不同或者栈为空时退出循环,继续在外边接着上面pushed序列压入剩余元素,等遍历完所有pushed元素后,如果两个序列相互匹配的话就栈内为空,否则就不为空。两个序列,每个序列中的。原创 2024-03-11 15:57:18 · 401 阅读 · 0 评论 -
剑指offer面试题28:对称的二叉树
1.中序遍历是左中右,所以初步想法是使用中序遍历把二叉树遍历一遍添加到容器中,这时候要把空着的节点以null的形式添加进容器,针对这种。2.书中的想法是使用迭代的思路,将比较左右两个节点,判断他们的情况一共有四种情况,都为空。树结构,然后把容器分为两段比较他们的值,从而得出是否是对称二叉树。,值一样则继续判断左节点的左子节点与右节点的右子节点情况。左节点的右子节点与右节点的左子节点情况。请设计一个函数判断一棵二叉树是否。,一个为空一个不为空。原创 2024-03-01 20:16:51 · 394 阅读 · 0 评论 -
剑指offer面试题22:链表中倒数第k个节点
2、我们还可以设置两个指针都同时指向头结点,第一个指针先走k-1步然后第二个指针开始跟第一个指针一起向后遍历,当第一个指针遍历到最后一个元素时,第二个指针就是指向的倒数第k个节点。1、求倒数第k个节点的值,我们归纳出当总共有n个节点时,倒数第k个节点就相当于从头开始的第n-k+1个节点。此方式要遍历两次链表第一次求出链表总数,第二次才能解出倒数第k个节点。实现一种算法,找出单向链表中倒数第 k 个节点。以下情况会导致代码崩溃,需要考虑。2.考察所写代码的鲁棒性。原创 2024-03-01 20:15:20 · 293 阅读 · 0 评论 -
剑指offer面试题16:数值的整数次方
同时这个代码可以优化,比如求一个数的16次方,上面的做法是从1到16依次来做,但是在这个过成中已经产生了8次方,我只要把这个8次方的数在两两相乘就可以得到16次方,这里需要考虑奇偶性。要权全面考虑输入的所有情况,输入的指数可能大于1,小于1或者是零和负数。不得使用库函数,同时不需要考虑大数问题。这里最容易出错的地方就是没有考虑到。原创 2024-01-10 20:07:19 · 329 阅读 · 1 评论 -
剑指offer面试题15:二进制中1的个数
针对这个问题,我们不右移输入的数字n。:这个方法思路是:先判断整数二进制中最右边一位是不是1;接着把输入的整数右移一位,此时原来处于从右边数起的第二位被转移到了最右边,在判断是不是1,这样每次移动一位,直到整数变为0为止。:在右移处理最左边的数字时:当位无符号数时,则用0填补最左边的n位;如果是有符号数时,则用数字的符号位填补最左边的n位,即填补n个1,请实现一个函数,输入一个整数,输出该数二进制表示中。所以上面的程序当输入的是一个负数例如。,则运算的最后结果为。原创 2024-01-09 17:17:30 · 365 阅读 · 0 评论 -
剑指offer面试题14:剪绳子
1.可以将这个问题看成为一个动态规划问题,我们现在求的是剪成为m段,得到的最大乘积。2.就是使用贪心算法,每一步裁剪的都是一个最优解,那么整体他就是一个最优,从局部最优推导出全局最优,当n>=5时,我们尽可能多地去剪长度为3的绳子;当剩下的绳子长度为4,就把绳子剪成两段长度为2的绳子,这样就可以得到最大乘积。例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。是顺序递增的,这意味着计算的顺序是自下而上的。的绳子,请把绳子剪成整数长的。),每段绳子的长度记为。原创 2024-01-08 19:50:35 · 365 阅读 · 0 评论 -
剑指offer面试题13:机器人的运动范围
这个题目类与之前的题目类似,就是起点是 [0, 0],判断当前点能够进入然后再遍历四周的点,每次移动到四周点时再将该点作为起点即可,也是一个回溯问题。的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于。例如,当k为18时,机器人能够进入方格。请问该机器人能够到达多少个格子?原创 2024-01-07 16:51:31 · 407 阅读 · 0 评论 -
剑指offer面试题12:矩阵中的路径
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。这是一个经典的回溯算法题目,可以使用回溯遍历出说有的结果,找到直到找到符合结果的路径。原创 2024-01-06 17:26:00 · 308 阅读 · 0 评论 -
剑指offer面试题10:斐波那契数列
但是使用递归的方式的话就会产生很多重复节点的运算就可以看成两边子树有很多重复的部分多计算了,这也就意味着计算量会随着n的增大而急剧增大,并且可能还有栈溢出的情况产生。先是简单情况,当只有一阶楼梯那么,只有一种方法,当有两阶楼梯那么就有2种方法。阶楼梯,第一次跳的时候就有两种选择:一是第一次就只跳1级,此时跳法数目等于后面剩下的。这个也可以用动态规划的思路:也就是现在的状态可以由前面的状态推导出来。可以使用递归的方式实现这个,也可以使用循环的方式实现它。因此,n级楼梯的不同跳法就是这两个的和为。原创 2024-01-05 14:33:05 · 340 阅读 · 0 评论 -
剑指offer面试题11:旋转数组的最小数字
就是利用二分查找的思路,我们用两个指针分别指向数组的第一个元素和最后一个元素,按照题目中的规则,第一个元素应该是大于或者等于最后一个元素。所以不管是移动左边界还是有边界,查找范围都会缩小到原来的一半,接下来在用更新之后的两个指针重复做新的一轮的查找。},这样的话就不能判断最小元素是在指针的左边还是右边的在这个区间内进行顺序搜索。,此时数组中最小元素应该位于该中间元素的右边,缩小寻找范围。,此时数组中最小元素应该位于该中间元素的左边,缩小寻找范围。,最小值就在该区间内。的数组,预先按照升序排列,经由。原创 2024-01-05 14:32:14 · 803 阅读 · 0 评论 -
剑指offer面试题9:用两个栈实现队列
剑指offer面试题9:用两个栈实现队列原创 2024-01-02 13:21:48 · 321 阅读 · 0 评论 -
剑指offer面试题8:二叉树的下一个节点
面试题8:二叉树的下一个节点原创 2024-01-01 18:33:31 · 301 阅读 · 0 评论 -
剑指offer面试题7:重建二叉树
剑指offer面试题7:重建二叉树原创 2023-12-30 18:12:58 · 369 阅读 · 0 评论 -
剑指offer面试题6:从尾到头打印链表
剑指offer面试题6:从尾到头打印链表原创 2023-12-29 15:22:47 · 400 阅读 · 0 评论 -
剑指offer面试题5:替换空格
剑指offer面试题5:替换空格原创 2023-12-28 13:28:31 · 343 阅读 · 0 评论 -
剑指offer面试题4:二维数组中的查找
剑指offer中二维数组中的查找原创 2023-12-22 13:29:29 · 311 阅读 · 1 评论 -
剑指offer面试题3:数组中重复的数字
剑指offer:中数组重复的数字题目原创 2023-12-22 13:26:39 · 327 阅读 · 0 评论 -
剑指offer:赋值运算符函数
赋值运算符题目原创 2023-12-21 21:44:55 · 322 阅读 · 0 评论