
剑指offer
文章平均质量分 61
elsawei
这个作者很懒,什么都没留下…
展开
-
rand5()生成rand7()
找工作,工作,作,任重而道远。 看到面筋里面这道题,刚开始是没有任何思路的,后来我就习惯了。 原始思路:利用rand5()扩展成一个更长的区间,然后映射到7的长度上面。 想啊想啊,终于还是看了别人的扩展长度的代码 pr7=5*(rand5()-1)+rand5(); 这个真的很急很关键。 知道映射到一个均匀的长区间以后,于是想这个区间是1-25(设生成数原创 2017-08-27 20:13:52 · 415 阅读 · 0 评论 -
剑指offer之二维数组的查找
晕晕乎乎的周一来上班了。 果然周一诸事不宜,撸一个剑指offer浑浑噩噩的两个小时,晕。 晕晕乎乎写的代码,遇到二维数组不知道啥是行啥是列。二维数组都排好序了,查找还是挺容易的,就是一定要注意边界,边界,界。 首先我们选择一个起点,起点很重要,因为是二维涉及到搜索方向的问题,所以我们要找一个合适的起始点。来看看四个顶点哪个合适。 1)第一个点是0,0如果我们遇到原创 2017-08-28 10:39:49 · 231 阅读 · 0 评论 -
重建二叉树
脑子去哪儿第三篇。。。原始思路:先序遍历的第一个节点是根节点,去扫描在中序当中根的位置(很急很关键),找到以后,发现对于中序序列根的左边为左子树,根的右边为右子树。 这是我们的大致判定思路,然而现实还有很多坎坷等着你,别急慢慢来。 vector&preorder, vector inorder 于是想着找到根在Inorde原创 2017-08-28 21:55:23 · 197 阅读 · 0 评论 -
用两个栈实现队列
今天牛客这个oj竟然没有出幺蛾子,大概是因为没有输入输出吧。话不多说,正面刚:栈的性质是先进后出,而队列却是先进先出,所以相当于它们在出的时候是相反的。 下面再说栈的性质,栈的函数只有pop弹出,top访问栈顶元素,push压栈。 下面来看牛客给的头class S原创 2017-08-29 11:08:18 · 216 阅读 · 1 评论 -
旋转数组的最小数字
旋转数组的最小数字。原始思路:二分查找,如果mid大于最后的数字,说明小数在mid,high的区间里面。如果mid小于等于最后的数字,说明小数在low,mid的区间里面。 哗哗哗写好,leetcode已经ac class Solution {public: int findMin(vector& nums) {原创 2017-08-29 16:47:43 · 208 阅读 · 0 评论 -
二叉树中和为某一值的路径
依然没想出来,思绪很乱,于是偷偷瞄了剑指offer和牛客讨论区。 发现我对递归的误解很深,总觉得这个过程有点绕,和大学的时候学递归的惯性思路一模一样,总按普通思维去思考。 主要问题就是集中在变量的生存周期。 思路:按照先序模式进行遍历,然后压入栈中,如果是叶子节点,则停下来,判断和是否为指定数字。递归会自动返回上一层,访问右节点,继续判断,直到所有的路径都被扫描完毕,结原创 2017-09-02 22:28:50 · 209 阅读 · 0 评论