随笔分类 -  Algorithm

摘要:二叉树的创建 思路:数组中从上到下依次放着二叉树中的元素,使用递归很容易实现,那么这里使用容器来存放之前的状态实现循环创建二叉树。 二叉树的先序、中序和后序遍历 思路:借用之前看到的一篇文章,可以使用同一套代码完成这3种遍历,主要思想是有重合元素的局部有序能使整体有序。 阅读全文
posted @ 2017-04-25 16:30 輪迴之間 阅读(5508) 评论(0) 推荐(0)
摘要:题目链接:https://www.nowcoder.com/questionTerminal/79c639e02bc94e6b919e3372c8e1dc5e小易拥有一个拥有魔力的手环上面有n个数字(构成一个环),当这个魔力手环每次使用魔力的时候就会发生一种奇特的变化:每个数字会变成自己跟后面一个数 阅读全文
posted @ 2017-04-03 13:26 輪迴之間 阅读(1655) 评论(0) 推荐(0)
摘要:去除重复数的全排列 如下是递归实现:(还可以使用字典序实现) 阅读全文
posted @ 2017-03-29 11:10 輪迴之間 阅读(1455) 评论(0) 推荐(0)
摘要:动态规划的一般思路是分为四步,即:寻找最优子结构、递归定义最优子结构、自底向上求解最优子结构和构造最优解。 接下来我列举出几个常见的动态规划面试题进行说明。 (1)数学三角形:比较简单,直接贴一个我看到的讲得最清楚的文章,http://blog.csdn.net/baidu_28312631/art 阅读全文
posted @ 2017-03-28 16:22 輪迴之間 阅读(988) 评论(0) 推荐(0)
摘要:问题: 2010年中兴面试题 编程求解: 输入两个整数 n 和 m,从数列1,2,3…….n 中 随意取几个数, 使其和等于 m ,要求将其中所有的可能组合列出来. 思路: 类似这种组合问题一般都是使用递归的策略,考虑到n个数和为m,假设要解决的函数为f(n,m), 假设我们选择了第n个数,那么问题 阅读全文
posted @ 2017-03-24 15:55 輪迴之間 阅读(2103) 评论(0) 推荐(0)
摘要:题目: n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。 当一个数字删除后,从被删除数字的下一个继续删除第m个数字。 求出在这个圆圈中剩下的最后一个数字。 我的思路: 这是个很经典的环形问题,最优的方案 阅读全文
posted @ 2017-03-23 23:18 輪迴之間 阅读(3054) 评论(0) 推荐(1)
摘要:题目介绍: 如果把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两个节点之间的个数。 写一个程序求一棵二叉树中相距最远的两个节点之间的距离。 如下图所示,粗箭头的边表示最长距离,显然最大距离是从A到B,为6。 我的思路:最长路径必然要经过树或者其子树的根节点,所以可以用递归 阅读全文
posted @ 2017-03-23 14:47 輪迴之間 阅读(551) 评论(0) 推荐(0)
摘要:判断整数序列是不是二元查找树的后序遍历结果 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11 因此 阅读全文
posted @ 2017-03-23 10:59 輪迴之間 阅读(967) 评论(0) 推荐(0)
摘要:链表 1. 判断两个链表是否相交? A: 在无环的情况下,如果两个链表有结点相同,那么它们下一结点也相同,如此可推出尾结点也相同。 那么只要判断两链表的尾结点是否相同。 2. 判断一个链表是否有环? A: 定义两个指针,指向头结点,一个每次移动一个结点,另一个每次移动两个结点,如果慢的能追上快的(也 阅读全文
posted @ 2017-03-22 15:37 輪迴之間 阅读(619) 评论(0) 推荐(0)
摘要:腾讯面试题: 给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下: 【0,1,2,3,4,5,6,7,8,9】 举一个例子, 数值: 0,1,2,3,4,5,6,7,8,9 分配: 6,2,1,0,0,0,1,0,0 阅读全文
posted @ 2017-03-22 15:07 輪迴之間 阅读(629) 评论(0) 推荐(0)
摘要:发现我自己思考得到的方法相比百度搜索得到的TOP5解法似乎更容易理解,所以就把我的思路贴出来供大家借鉴。 这是一道微软面试题。 题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如 输入整数22和如下二元树 1 阅读全文
posted @ 2017-03-22 13:25 輪迴之間 阅读(260) 评论(0) 推荐(0)
摘要:刚才看了下网上搜索到的TOP5使用动态规划解决此问题的代码,感觉没有突出动态规划的特点。所以自己思考了一番,提出如下解决方案: 首先再重复下动态规划的定义:将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。 思考状态转移方程:设d[i]表 阅读全文
posted @ 2017-03-21 22:42 輪迴之間 阅读(655) 评论(0) 推荐(0)