《剑指offer》解题笔记
《剑指offer》解题笔记
《剑指offer》共50题,这两周使用C++花时间做了一遍,谨在此把一些非常巧妙的方法、写代码遇到的难点、易犯错的细节等做一个简单的标注,但不会太过具体。具体算法还是请參考书本。
做的比較急,代码还有非常多不完好的地方,如有错误。欢迎改正,地址为:github:sword_of_offer。
能够使用git
命令获代替码。
clone https://github.com/heLomaN/sword_of_offer.git
当中,少数无法验证正确与否的题目没有写代码,部分二叉树的题目写了代码,但因为生成二叉树太过麻烦没有验证。
解题笔记
Q3
声明并初始化二维数组的语句怎样写?
cin怎样推断输入结束?
Q4
字符数组的末尾位置计算差了1,忘了加上\0。要小心
Q5
递归的方法更简洁
Q6
stl的find算法
vector传值性能差,应该用引用
截取一段时要依据左右子树的长度来截,再次find是错误的
Q7
stack的pop返回值是void。而top方法才返回顶部值
Q8
这个二分相当的难。
尤其是非递归的写法
边界值处理要细致想
不能忽略如1 0 1的特殊情况
Q9
应该用long long类型
Q10
求数的二进制表示种1的个数应记住:减1再&自身总会消去一个1
Q11
除以2用>>,模2用&,效率更高
应该加上错误检測
Q12
遇到数字有关的题,首先考虑是不是大数问题
Q13
把下一个节点的值复制到当前节点就可以。之后删除下一个节点
Q14
9du oj要求奇数或偶数的顺序不变。如今的代码没有符合这个要求
Q15
node *p,q
仅仅把p声明为指针。小心
參考https://github.com/julycoding/The-Art-Of-Programming-By-July,*
应该靠近类型名
Q16
绘图以帮助理解
Q18
!p推断指针为空是能够的
代码未測试
Q22
方法非常难想起来,要细致分析当中规律
Q25
代码未測试
Q26
方法非常难想起来 第三步分离链表操作不够简洁
Q27
使用了一个辅助vector,书上的方法不能细致的写出来
Q28
这样的解法无法处理多个字符反复的情况。会造成反复
递归的时候改动全局数组,但递归调用后要把全局数组改动回来,和之前递归调用前后出入栈的方法有异曲同工之妙
8皇后问题也能够用这种方法解决
Q29
求数组中随意第K大的数字有成熟的O(n)的算法
Q30
C++中throw new excetion("error")是不对的,不能用字符串初始化excetion
set和multiset是基于红黑树实现的
Q31
第一种解法和DP解法原理是一样的
Q32
1到n个9之间出现1的次数是n*10^(n-1)
代码未測试
Q33
itoa不是标准库函数,仅仅是linux下的库函数。能够用printf取代
string能够直接+、>、<运算
Q34
关键是怎样保证已经找到的丑数数组是有序的
Q35
memset函数是在cstring头文件里
Q35
关键是merge两个数组时的细节处理
归并排序相当于O(n)的空间换来了时间复杂度提升到O(nlogn)
Q37
代码未測试
Q38
关键是改变二分查找的循环推断条件
Q39
题目2的算法不易想起
代码未測试
Q40
方法非常巧妙
C++中auto& e : v遍历容器注意v指向元素的引用才干够改变容器中的值
Q41
书中未给出算法证明,亟待解决
Q43
方法巧妙。解法非常难想起来
Q45
方法巧妙,解法非常难想起来
Q50
假设有指向父节点的指针,那么找到这两个点到根节点的链表,求第一个公共节点
假设没有,那么dfs遍历得到这两个点的链表,求第一个公共节点
转载请注明作者:Focustc,博客地址为http://blog.csdn.net/caozhk,原文链接为点击打开
《剑指offer》解题笔记的更多相关文章
- 《剑指Offer》笔记(更新中)
这几天为了找工作开始看<剑指offer>,到现在也大概浏览一遍了,前两天看作者博客中提到九度OJ,就去看了一下,发现上面有书上的题目,就想可以自己写代码练习一下,而不仅仅是看解题思路,毕竟 ...
- 刷《剑指offer》笔记
本文是刷<剑指offer>代码中的学习笔记,学习ing.. 衡量时间和空间. 递归的代码较为简洁,但性能不如基于循环的实现方法.
- 剑指Offer整理笔记
说在前面,本篇的目的是为了学习剑指offer,以及博客园的排版功能,并将文章排版得整洁得体. 梵蒂冈梵蒂冈地方官方
- 剑指Offer读书笔记(持续更新中)
(1)定义一个空的类型,里面没有不论什么成员变量和成员函数,对该类型求sizeof,得到的结果是多少? 答案是1.空类型的实例中不包括不论什么信息,本来求sizeof应该是0,可是当我们声明该类型实例 ...
- 剑指offer 面试29题
面试29题: 题目:顺时针打印矩阵(同LeetCode 螺旋矩阵打印) 题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 ...
- 【剑指offer】删除链表中重复的节点,C++实现(链表)
0.简介 本文是牛客网<剑指offer>笔记. 1.题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针.例如,链表1-> ...
- 《剑指offer》刷题笔记
简介 此笔记为我在 leetcode 上的<剑指offer>专题刷题时的笔记整理. 在刷题时我尝试了 leetcode 上热门题解中的多种方法,这些不同方法的实现都列在了笔记中. leet ...
- 【剑指Offer】合并两个排序的链表 解题报告(Python)
[剑指Offer]合并两个排序的链表 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interview ...
- 【剑指Offer】反转链表 解题报告(Python)
[剑指Offer]反转链表 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描 ...
随机推荐
- Android面试,BroadCastReceiver的两种注册方式的异同
在Android手机应用程序中开发中,需要用到BroadcastReceiver来监听广播的消息.在自定义好BroadcastReceiver ,需要对其进行注册,注册有两种方法: 一种是在代码当中注 ...
- 使用webService时,gsoap数据类型注意事项
今天在使用gsoap生成webservice客户端文件时,发现我的参数类型全被改了,比如string型变成了char*,原来有STL的地方也变没了,经过研究发现,原来和我生成的头文件时使用的参数有关, ...
- php内置的http server, 类似于nodejs里面和golang里面的
原文:https://www.sitepoint.com/taking-advantage-of-phps-built-in-server/ ----------------------------- ...
- C语言 域名通配符实现
本例实现通配符 * 的功能,不支持*在字符串的末尾, 仅提供思路,函数仅做简单单元测试. 如有使用,还请自己进行修改 // str1: 待匹配字符串 // str2: 带通配符字串 int wildc ...
- C#基础视频教程6.2 如何简单读写数据库
上一节我们简单介绍了数据库的读写,所使用的数据库都是随便写的(用水果代替,但不是真正的食品零售数据表,至少没有价格,销量等等).这一节我们思考如何实现一个测试题的数据库,所谓的测试题数据库就是假定系统 ...
- 网络地址转换相关函数使用(inet_addr,inet_ntoa,inet_addr)
aa 相关函数原型及参数类型: 函数原型:int inet_aton(const char *cp, struct in_addr *inp); in_addr_t inet_addr(const c ...
- Project Euler 001-006 解法总结
Problem 1. Find the sum of all the multiples of 3 or 5 below 1000. 题目要求找出所有1000以下的3或者5的倍数之和. 最简便 ...
- HashMap源代码阅读
Map类结构 Java的集合类主要由两个接口派生出来,Collection和Map,上一节我们讨论过Collection接口结构,如今来看下Map接口. HashMap 一种存储键/值关联的数据结构 ...
- Vijos P1002 过河 (NOIP提高组2005)
链接:https://www.vijos.org/p/1002 解析: 若 p*x+(p+1)*y=Q(採用跳跃距离p和p+1时能够跳至不论什么位置Q),则在Q ≥ P*(P-1)时是一定有解的. 因 ...
- Java之开发工具(1) - Eclipse 如何设置注释的模板
最常用的注释就是对类的说明和方法的说明,关于这类代码的注释方式,在Eclipse中可以这样进行设置: windows---preferences...---java--code style--code ...