摘要:
题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析: 一般方法是使用每个字符间都比较一次,算法复杂度为o(n^2) 可以使用空间换时间的方法,字符在ASCII码的表示范围内(0~256),使用捅排序思想。 使用int str[256] 表示256个字符在此字符 阅读全文
摘要:
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 例如输入 8 / / 6 10 / / / / 5 7 9 11 输出86 10 5 7 9 11。 #include<iostream> using namespace std; struct BTree{ BTree 阅读全文
摘要:
题目:输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换。 例如: 8 / / 6 10 // // 5 7 9 11 输出: 8 / / 10 6 // // 11 9 7 5 分析: 可以使用递归思想,BT 阅读全文
摘要:
题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 分析: 通过设置数组首尾指针,i = 0, j = len -1, 因为数组是有序的,当array[i] + ar 阅读全文
摘要:
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。 分析: 单链表只能向后遍历,不能向前遍历,尾指针好找,倒数第K个不能从尾指针向前找。 倒的不好找,正的好找,我们只需要知道链表的总长度,就可以知道正数第几个节点(len(list) - k -1)。 实现如下: 阅读全文
摘要:
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历结果 如果是返回true,否则返回false。 分析: 问题的关键是要找到二元查找树的后序遍历结果,字符串的比较很简单。 下面看看实现: 输入整数序列为:5,7,6,9,11,10,8 二元查找树: 8 / / 6 10 / / / / 阅读全文
摘要:
链表假设是单链表, 这题需要找到相交的特征,相交后,最后一个节点肯定相同,所以,如果相同则是相交,否则不相交。 下面看看实现: #include<iostream> using namespace std; struct LNode{ LNode(int _d = 0):data(_d),next( 阅读全文
摘要:
题目:输入n个整数,输出其中最小的k个。 例如输入7,2,4,5,1,3,6,8这8个数字,则最小的4个数字为1,2,3和4。 下面使用快速排序和分治法的思想, 1)先找选一个元素a遍历一次剩余的其他元素,使得a左边的元素都是小于它的,a右边的元素都是大于它的。 2)再统计a 左边的元素或者包括a 阅读全文
摘要:
从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如 输入整数22和如下二元树 10 / / 5 12 / \ 4 7 则打印出两条路径:10, 12和10, 5, 7。 #include <iostream> #include <list> 阅读全文
摘要:
1.CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。CommonJS 模块输出的是值的拷贝,也就是说,一旦输出一个值,模块内部的变化就影响不到这个值。ES6 模块的运行机制与 CommonJS 不一样。JS 引擎对脚本静态分析的时候,遇到模块加载命令 import,就会生成 阅读全文