剑指offer
文章平均质量分 65
shareone2
放弃很容易,但坚持下来一定很酷
展开
-
剑指 Offer 15. 二进制中1的个数
二进制中1的个数0、前言1、题目描述2、解题思路(1)可能引起死循环的解法(2)避免死循环的解法(3)给面试官带来惊喜的解法3、代码实现(1)可能引起死循环的解法代码(2)避免死循环的解法代码(3)给面试官带来惊喜的解法代码4、相关题目5、小节0、前言本题选自leetcode1、题目描述2、解题思路(1)可能引起死循环的解法直接用数字的最后一位&1判断最后一位是否为1,之后通过>>1位将倒数第二位数字变成倒数第一位数字,直到这串二进制数字为0即可。乍一看没.原创 2021-04-24 22:14:56 · 142 阅读 · 0 评论 -
剑指 Offer 14- II. 剪绳子 II
剪绳子 II0、前言1、题目描述2、解题思路3、代码实现4、小节0、前言本题选自leetcode1、题目描述2、解题思路贪心的特性我们需要先了解一下当我们应用贪婪算法解决问题的时候,每一步都可以做出一个贪婪的选择,基于这个选择,我们确定能够得到最优解!绳长大于等于5的时候,我们尽可能多地剪长度为3的绳子;当剩下长度为4的时候,把绳子剪成长度为2的绳子!证明:3、代码实现class Solution {public: int cuttingRope(.原创 2021-04-24 22:14:34 · 160 阅读 · 0 评论 -
剑指 Offer 14- I. 剪绳子
剪绳子0、前言1、题目描述2、解题思路(1) 动态规划解法(2) 贪心解法3、代码实现(1)动态规划(2)贪心4、小节0、前言本题选自leetcode1、题目描述2、解题思路(1) 动态规划解法在解决本题之前,我们有必要先了解一下动态规划的特性!1.求一个问题最优解!2.整体问题的最优解是依赖各个子问题的最优解!3.我们把大问题分解为若干个小问题,这些小问题之间还有互相重叠的更小问题!4.从上往下分析问题,从下往上求解问题!(2) 贪心解法请参考:剪绳子II3、代码.原创 2021-04-24 22:14:11 · 281 阅读 · 0 评论 -
剑指 Offer 13. 机器人的运动范围
机器人的运动范围0、前言1、题目描述2、解题思路3、代码实现4、小节0、前言本题选自leetcode1、题目描述2、解题思路深度优先搜索,利用递归的思路即可!从(0, 0)节点开始“构造”一棵树,因为叶节点是不能到达的点(边界点),所以只要返回树的内部节点数量即可。与剑指 Offer 12. 矩阵中的路径基本一致!具体解法可以查看我的代码!3、代码实现class Solution {public: vector<vector<bool>> v.原创 2021-04-15 10:39:49 · 186 阅读 · 0 评论 -
剑指 Offer 12. 矩阵中的路径
矩阵中的路径0、前言1、题目描述2、解题思路3、代码实现4、小节0、前言本题来自leetcode1、题目描述2、解题思路这是一道回溯法的典型题目,所以需要应用递归的思路来解决。我们可以形象的用树状结构来表示。在某一步有n个选项:如果当前选项符合要求,我们则进入当前选项中,假设这个选项有k个选项,我们则再根据条件进行判断,当走到叶节点也符合要求的时候,那些被我们选择的由根到叶的路径则是最终结果。如果当前选项不符合要求,我们则回溯到他的父节点,去选择它具有的别的选项,如果都不符合,则回溯到.原创 2021-04-15 08:38:41 · 111 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
旋转数组的最小数字0、前言1、题目描述2、解题思路3、代码实现4、小节0、前言本题选自leetcode查找和排序是程序设计中经常需要用到的算法!其中二分查找一定要信手拈来,毕竟这是高频算法!本题就是对二分的熟练程度的考察!1、题目描述2、解题思路转自《剑指offer》83页我们注意到旋转之后的数组实际上可以划分为两个排序的子数组,而且前面子数组的元素都大于或者等于后面子数组的元素。我们还注意到最小的元素刚好是这两个子数组的分界线。在排序的数组中我们可以用二分查找法实现O(log.原创 2021-04-13 07:56:16 · 66 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
青蛙跳台阶问题0、前言1、题目描述2、解题思路3、实现代码4、本题扩展0、前言本题选自leetcode1、题目描述2、解题思路首先我们考虑最简单的情况。如果只有1级台阶,那显然只有一种方法。如果有2级台阶,那就有两种跳法: 一种是分两次跳,每次跳1级;另一种就是一次跳2级。接着我们再来讨论一般情况。我们把n级台阶时的跳法看成n的函数,记为 f(n)f(n)f(n) 。当n >>> 2的时,第一次跳的时候就有两种不用选择:一是第一次只跳1级,此时跳法数目等于后面剩.原创 2021-04-08 21:35:02 · 171 阅读 · 0 评论 -
剑指 Offer 10- I. 斐波那契数列
斐波那契数列0、前言1、题目描述2、解题思路(1)递归(2)循环3、代码示例(1)递归代码(2)循环代码0、前言本题选自leetcode1、题目描述2、解题思路(1)递归很多教科书都会用这道题去讲解递归的例子,但这并不合适。例如:当我们求解f(10)f(10)f(10)的时候,就要求f(9)f(9)f(9) 和 f(8)f(8)f(8),在求f(9)f(9)f(9)的时候还要求f(8)f(8)f(8) 和 f(7)f(7)f(7)… 可以发现,f(8)f(8)f(8)被重复计算了。这.原创 2021-04-08 20:39:31 · 305 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
用两个栈实现队列0、前言1、题目描述2、题目说明3、解题思路4、代码实现5、小节0、前言本题来自leetcode1、题目描述2、题目说明本题的示例有些奇怪,个人感觉需要说明一下。输入:["CQueue","appendTail","deleteHead","deleteHead"] 这一行表示每一行代码的操作[[],[3],[],[]]这个表示每一行代码操作所需要的参数举例:CQueue 表示新建一个CQueue对象,对应的所需参数为[],即此操作不需要参数。ap.原创 2021-04-08 14:58:11 · 139 阅读 · 0 评论 -
面试题8:二叉树的下一个节点
#mermaid-svg-L58pb72rigo7u9MO .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-L58pb72rigo7u9MO .label text{fill:#333}#mermaid-svg-L58pb72rigo7u9MO .node rect,#mermaid-svg-L58pb72rig原创 2021-04-08 14:04:55 · 179 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
重建二叉树0、前言1、题目描述2、解题思路3、代码示例4、小节0、前言本题来自leetcode1、题目描述2、解题思路需要掌握的知识点:前序遍历,中序遍历,递归根据先序遍历我们能知道第一个值一定是这颗树的根节点,之后在中序遍历中找到这个值所在的位置,然后就可以知道这颗树的左子树和右子树是什么了。再依次对左子树和右子树重复上述操作(递归),就可以将这棵树完整的构建出来了。3、代码示例/** * Definition for a binary tree node. * s.原创 2021-04-06 20:50:06 · 169 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
从尾到头打印链表0、前言1、题目描述2、解题思路3、代码示例0、前言本题来自 leetcode1、题目描述2、解题思路如果仅仅是打印的话,可以遍历列表将元素全部压入栈中再去模拟弹栈过程,进而想到遍历链表递归实现打印。但是这道题是将链表的值反向存储在vector中返回。所以我们需要遍历链表,将其值全部压入栈中。再将栈值全部弹出存入vector数组即可。3、代码示例栈是vector的容器适配器,vector预先分配空间可节约时间。/** * Definition fo.原创 2021-04-06 16:26:42 · 159 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
替换空格0、前言1、题目描述2、解题思路3、代码示例(1)C语言(2)C++3、Python0、前言在网络编程中,如果URL参数中含有特殊字符,如空格、’#‘等,则可以能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换的规则是在’%‘后面跟上ASCII码的两位十六进制的表示。比如空格的ASCII码是32,即十六进制的0x20,因此空格被替换成"%20"。再比如’#'的ASCII码为35,即十六进制的0x23,它在URL中被替换为"%23"。摘自 《剑指Off.原创 2021-04-06 13:24:07 · 296 阅读 · 3 评论 -
剑指 Offer 04、二维数组中的查找
二维数组中的查找0、前言1、题目描述2、题目示例3、题目分析4、解题规律5、代码示例6、注意事项0、前言本题来自leetcode。优先选择leetcode,之后为牛客网。1、题目描述2、题目示例3、题目分析将二维数组想象为一个矩阵。对于查询来说,单元格值有三种结果:等于,小于,大于。依旧束手无测,选择从具体的例子分析 假设给定矩阵为:128924912471013681115 假定要查找的数字为: .原创 2021-04-05 21:37:53 · 199 阅读 · 0 评论 -
剑指 Offer 03、数组中重复的数字
数组中重复的数字0、前言1、题目描述2、题目示例3、题目分析4、代码示例(1)哈希法(2)排序法0、前言本题来自leetcode。个人觉得本题难度在leetcode上属于简单是一种失误。它考察的是程序员的沟通能力,先问面试官要时间/空间需求!!!只是时间优先就用字典,还有空间要求,就用指针+原地排序数组,如果面试官要求空间O(1)并且不能修改原数组,还得写成二分法!!!摘自leetcode 自来火 老哥的评论1、题目描述2、题目示例3、题目分析根据面试官给出的时间和空.原创 2021-04-05 21:37:16 · 242 阅读 · 0 评论 -
《剑指offer》面试基本要求总结
目录0、前言1、面试流程(1)面试官谈面试(2)面试的三种形式(3)面试的3个环节2、面试需要的基础知识(1)面试官谈基础知识(2)编程语言0、前言《剑指offer》面试的流程和基本需求总结,最大精简化,可能有遗漏,大佬评论区多多补充。1、面试流程(1)面试官谈面试初级程序员考察算法和数据结构,高级程序员考察专业技能和项目经历。对面试公司有一定了解,也要准备好问面试官的问题。不要急于写代码,问清楚问题。不要急于上交代码,准备几轮测试自行检测bug。平时踏实写程序。(2)面试的三种.原创 2021-04-02 20:55:01 · 420 阅读 · 3 评论