会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
熊妮妮
报错乃人生常事 不是在写bug就是在debug
博客园
首页
新随笔
联系
管理
订阅
随笔分类 -
剑指offer刷题录
1
2
下一页
剑指offer系列19:复杂链表的复制
摘要:这道题是典型的分治法,将一个大问题分解成几小步解决。一定要注意在使用指针的时候指针指向是否为空的问题。在指针指向时,可以将一个指向为空的指针作为赋值来写,但是空指针不能指向任何地方(指向空也不行),这点一定要记住。 #include<iostream> #include<vector> using
阅读全文
posted @
2022-04-30 15:16
妮妮熊
阅读(24)
评论(0)
推荐(0)
剑指offer系列0:替换空格&从头到尾打印链表
摘要:这是最前面的几个题,我之前写在GitHub上了,现在为了统一补回来。 面试题4:替换空格 字符串的名字是一个指针变量,里面存的内容是其第一个字符的地址。如字符串a[10],则&a,a得到的均相同,都是a数组的第一个元素的地址。 面试题5:从头到尾打印链表
阅读全文
posted @
2019-08-15 14:53
妮妮熊
阅读(176)
评论(0)
推荐(0)
※剑指offer系列19:复杂链表的复制
摘要:这道题是典型的分治法,将一个大问题分解成几小步解决。一定要注意在使用指针的时候指针指向是否为空的问题。在指针指向时,可以将一个指向为空的指针作为赋值来写,但是空指针不能指向任何地方(指向空也不行),这点一定要记住。 之前把这篇写在另一个博客了,现在补回来。
阅读全文
posted @
2019-08-08 11:22
妮妮熊
阅读(200)
评论(0)
推荐(0)
剑指offer系列55:机器人的运动范围
摘要:这个题目的思路跟上一个很相似,还是回溯法。就是从第一个框开始判断是否大于限定值,然后判断它的上下左右。这个题可以明显看出来判断出来的应该是左上方区域,所以从0作为起点也很适合。 回溯法似乎很喜欢用递归,做题的时候注意边界值的处理。 这道题是剑指offer 的最后一个题了。我写的这个系列博客也进入了尾
阅读全文
posted @
2019-07-31 11:01
妮妮熊
阅读(164)
评论(0)
推荐(0)
※剑指offer系列54:矩阵中的路径
摘要:这个题目用的是回溯法。 之前回溯法练得比较少,所以这个题还是需要重视。 回溯法是算法里学过的,就是从第一个可能得路径开始找,一直找到最后一个。 这个题目要注意一下几点: 1.从第一个开始找,如果第一个元素等于要寻找的字符串的第一个元素,就继续去寻找该元素的上下左右,看是否等于其下一个。一直匹配到最后
阅读全文
posted @
2019-07-30 10:27
妮妮熊
阅读(159)
评论(0)
推荐(0)
剑指offer系列53:滑动窗口的最大值
摘要:分两步: 首先找到窗口内的内容,然后找到窗口内的最大值。 上面的解法是我自己想的,看了剑指offer,这个题是在栈与队列这一节放的,也就是考点是栈与队列。用上面的方法做时间复杂度是O(nk),但是用队列的方法做复杂度可以到O(n),也就是说每次滑动窗口可以在O(1)里找到最大值。 很大提高了效率,那
阅读全文
posted @
2019-07-29 20:37
妮妮熊
阅读(81)
评论(0)
推荐(0)
剑指offer系列52:数据流中的中位数
摘要:注意几点: 1.要是排序后的中位数,所以要对输入的数字排序 2.注意输出的类型是double
阅读全文
posted @
2019-07-29 20:13
妮妮熊
阅读(94)
评论(0)
推荐(0)
※剑指offer系列51:二叉搜索树的第k个结点
摘要:根据二叉搜索树的特点,它中序遍历的顺序就是从小到大的顺序。因此只要中序遍历找到第k个就可以。 1 class Solution { 2 public: 3 TreeNode* KthNode(TreeNode* pRoot, int k) 4 { 5 if (pRoot == NULL||k==0)
阅读全文
posted @
2019-07-29 19:50
妮妮熊
阅读(88)
评论(0)
推荐(0)
※剑指offer系列50:序列化二叉树
摘要:先来说一下什么是序列化二叉树,就是把二叉树转换成一串序列。反序列化就是将一串序列构造成一个二叉树。 这个题我也不是很懂,为什么要这样写 1 class Solution { 2 public: 3 vector<int> aux; 4 void treetovec(TreeNode * root)
阅读全文
posted @
2019-07-29 18:45
妮妮熊
阅读(110)
评论(0)
推荐(0)
剑指offer系列49:把二叉树打印成多行
摘要:有了上一个之字形打印二叉树,这个题就比较简单了。 首先分析这道题的结构,一行一行的输出。 1.如果第一行顺序存储,也就是先存左边在存右边。那么输出的时候也要同样的先左边后右边的顺序。这就是先进先出,所以用队列。 2.如果不顺序存,使用栈来存。第二行就先右边在左边,必须这样第一行输出的时候才可以先左后
阅读全文
posted @
2019-07-27 11:35
妮妮熊
阅读(114)
评论(0)
推荐(0)
剑指offer系列48:按之字形顺序打印二叉树
摘要:做这个题,选对数据结构很重要。 之字形打印,说明单双数行的输出顺序不一致,因此需要用两个栈。一行的数据放在其中一个栈中,如果栈空了说明此行全部输出,因此换下一个栈。 1 class Solution { 2 public: 3 vector<vector<int> > Print(TreeNode*
阅读全文
posted @
2019-07-27 10:43
妮妮熊
阅读(181)
评论(0)
推荐(0)
剑指offer系列47:对称的二叉树
摘要:这个题的主要思路是: 用二叉树的左子树的右子树和右子树的左子树比较,再用左子树的左子树和右子树的右子树比较。(好像有点绕,但其实就是对称的思想) 剑指offer的说法是用树的前序遍历的两个方法,前序遍历应该是:根-》左-》右。但是我们用另一种前序遍历:根-》右-》左。如果这两个序列一样就判断它是对称
阅读全文
posted @
2019-07-27 08:41
妮妮熊
阅读(109)
评论(0)
推荐(0)
剑指offer系列46:二叉树的下一个结点
摘要:寻找中序遍历中的给定结点的下一个结点,可以分为以下几种情况。 1.该节点有右子树,其右子树没有左结点,那么下一个一定就是右子树 2.该节点有右子树,其右子树有左结点,那么下一个一定就是右子树的左结点 3.没有右子树,有父节点,该节点是父节点的左子树,那么下一个就是它的父节点 4.没有右子树,有父节点
阅读全文
posted @
2019-07-26 16:07
妮妮熊
阅读(117)
评论(0)
推荐(0)
※剑指offer系列45:删除链表中重复的结点
摘要:思路: 1.用两个指针,第一个存之前的结点,第二种存当前结点。 2.每次判断当前结点与当前结点的下一个结点的值是否相同,如果相同就去调用函数寻找下一个与当前结点的值不同的几点,然后将前一个结点与找到的下一个结点连接起来。 如果不同则寻找一个:将当前结点的值付给前结点,当前结点移动到下一个结点。 注意
阅读全文
posted @
2019-07-26 11:03
妮妮熊
阅读(114)
评论(0)
推荐(0)
※剑指offer系列44:链表中环的入口结点
摘要:这个题要找到链表中的环的入口,很自然的可以分为两个问题。首先是判断链表中是否有环,其次寻找到环的入口。 1.判断是否有环,这里有两个指针。一个一次走一步,一个一次走两步。用这两个指针在链表上走,如果存在环两个指针一定会相遇,并且相遇的点是在环内。 这个很重要,判断链表是否存在环。 2.寻找环的入口。
阅读全文
posted @
2019-07-26 09:02
妮妮熊
阅读(123)
评论(0)
推荐(0)
剑指offer系列43:字符流中第一个不重复的字符
摘要:前面有一道题跟这个很类似,第35题。有了那个的经验这个就很好做了。区别是这个需要做的是一个字符流的只出现一次的字符,也就是字符串的情况是动态变化的。 有两个数据结构,一个是string类型的用来存储当前的字符流,还有一个用数组表示的哈希表来存储各个字符出现的次数。找第一个只出现一次的字符就是找哈希表
阅读全文
posted @
2019-07-25 14:38
妮妮熊
阅读(146)
评论(0)
推荐(0)
剑指offer系列42:表示数值的字符串
摘要:这个题难度并不大,主要考虑几个方面: 1.正负号位,只能出现一次,只能出现在数字的前面 2.小数点位,只能出现一次,必须出现在数字的终点 3.指数为e或E,可以出现在数字之前或者数字之后 4.称为数字的必要条件是必须包含数字(e和E算不算数组根据题目而定,此时假定不算) 有一个测试用例是“-.123
阅读全文
posted @
2019-07-25 09:48
妮妮熊
阅读(178)
评论(0)
推荐(0)
※剑指offer系列29:两个链表的第一个公共结点
摘要:这个题我拿到的第一个想法确实是遍历两个链表,先遍历第一个链表,在遍历内部再遍历第二个链表。这样两个for循环就可以计算出一样的结点了。剑指offer这一章讲的是算法的效率问题,所以我想这个题一定有更快捷的方法。但是我想不出什么快速的办法,o(╥﹏╥)o看了剑指offer上的解法,主要其实就一句话。两
阅读全文
posted @
2019-07-13 15:20
妮妮熊
阅读(110)
评论(0)
推荐(0)
剑指offer系列20:字符串的排列
摘要:求一个字符串中所有出现的字符的排列组合。首先把这个问题分解成若干个小问题:分治法。将所有的字符的排列可以拆分为第一个字符的选取和其余所有字符。然后其余的字符又可以拆分为第一个字符的变化选取和其余的字符串。以此类推即可得到解答。这就是很明显的递归了。注意递归的结束条件以及什么时候把这个字符串压入vec
阅读全文
posted @
2019-06-25 10:49
妮妮熊
阅读(159)
评论(0)
推荐(0)
剑指offer系列17:二叉搜索树的后序遍历序列
摘要:二叉搜索树(BST树):首先是二叉树,其次:非叶子结点的左指针指向的结点的值小于其父节点的子树,右指针指向的结点的值大于其父节点的值。 这样就可以形成以个思路,来一个vector,首先把最后一个拿出来,它是根结点。然后从头开始找比它大的第一个数,区分左右子树。第一个比根结点大的树之前都是左子树,其余
阅读全文
posted @
2019-06-18 10:51
妮妮熊
阅读(125)
评论(0)
推荐(0)
1
2
下一页
公告