剑指Offer
xy913741894
这个作者很懒,什么都没留下…
展开
-
剑指Offer之赋值运算符函数解析
1.赋值运算符函数AssignmentOperator题目:如下是类型CMyString的声明,请为该类型添加赋值运算符函数class CMyString{public: CMyString(char *p = nullptr); CMyString(const CMyString& str); ~CMyString();private: char *m_pDa原创 2017-01-18 20:13:47 · 878 阅读 · 0 评论 -
几道有趣的概率题
这几天在刷题,遇到几道有趣的概率题,需要设计算法,编程实现,整理一下: 给定N张扑克牌和一个随机函数,设计一个洗牌算法void fun(vectorint>& v)转载 2017-08-19 10:14:35 · 2298 阅读 · 0 评论 -
构建乘积数组--剑指Offer
题目描述 : 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]* A[1]… A[i-1]* A[i+1]… A[n-1]。不能使用除法这道题如果没有最后一个要求,直观想法就是将数组A中每个数相乘得出结果sum,每次求B[i]只需要sum / A[i]。但是题目不能使用除法,所以这种方法行不通,还有一点就是,如果存在某个A[i]原创 2017-04-25 16:10:23 · 589 阅读 · 0 评论 -
逆时针填充正方形(递归 循环)
如果所示,逆时针填充正方形,从1,2,3…到16,输入一个正方形的大小,填充。 比如输入4,正方形如上图,如果输入5,则是1,2,3…到25。这道题,可以按照如图所示的方法,先构造最外一圈的数,123一组,456一组,789一组,101112一组,只需要注意到下标的变化,数字的更新即可。对于里面矩阵可以采用递归的写法。void FillTheRectangle_1(vector<vector<in原创 2017-05-25 17:12:15 · 913 阅读 · 0 评论 -
剑指Offer之C++实现
代码可见我的github原创 2017-03-16 20:44:05 · 1772 阅读 · 0 评论 -
根据中序和前序遍历重建二叉树
重建二叉树前序遍历是先访问root,再依次访问左子树和右子树,而中序遍历则是先访问左子树,再依次访问root和右子树。在前序遍历中,第一个总为当前树的根节点root,因此我们可以根据root值在中序遍历序列中划分左右子树。然后再在划分的左右序列中,重复该操作,最终可以得到我们想要的结果。 我们以上面的前序和中序序列为例:第一次: 在前序遍历,得到1为根节点,根据中序序列,得到4,7,2原创 2017-02-01 16:37:52 · 405 阅读 · 0 评论 -
逆置链表以及逆序打印链表
这是剑指Offer第五道题,逆序打印链表。这道题不算难,算是我看这本书前几十页中,少数一眼能够直接写出代码的题。我最初的思路就是用个FILO栈实现,把链表中的元素压入栈中,然后再取出来实现逆序打印的功能。在这里,需要注意的点就是为了效率,stack中存入的元素最好是指向ListNode的指针,而非ListNode本身,或者其中ListNode中的数据(在这里尽管int类型和指向结点的指针大小一样(原创 2017-01-27 16:56:05 · 508 阅读 · 0 评论 -
二维数组中的查找 剑指Offer面试题
二维数组中的查找在一个二维数组中,每一行数字都按照从左到右的顺序递增,每一列数字都按照从上到下的顺序递增,请完成一个函数,判断该数组是否含有某个数字? 例如在下面的数组查找7返回true,查找5返回false。原创 2017-01-21 21:14:50 · 329 阅读 · 0 评论 -
关于2Sum,3Sum的题解
这几天在刷题,遇到几道有趣的概率题,需要设计算法,编程实现,整理一下: 给定N张扑克牌和一个随机函数,设计一个洗牌算法 如何等概率地从n个数中随机抽出m个数? 给定一个能够生成0,1两个数的等概率随机数生成器”,如何生成⼀个产生0,1,2,3的等概率随机数生成器? 和上题类似,如何用rand7生成rand9? 有一枚硬币,以p的概率产生正面,以1-p的概率产生原创 2017-08-27 18:18:10 · 598 阅读 · 0 评论