摘要:【题目】 对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。 给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。 【代码】
阅读全文
随笔分类 - 程序员面试金典编程题
摘要:【题目】 对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径。 给定图中的两个结点的指针UndirectedGraphNode* a,UndirectedGraphNode* b(请不要在意数据类型,图是有向图),请返回一个bool,代表两点之间是否存在一条路径(a到b或b到a)。 【代码
阅读全文
摘要:【题目】 实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。 给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。 【代码】
阅读全文
摘要:【题目】 有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。 给定一个操作序列int[][2] ope(C++中为vector<vector<int>>)代表所有事
阅读全文
摘要:【题目】 请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。 给定一个int[] numbers(C++中为vector<int>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只
阅读全文
摘要:【题目】 【代码】 请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。 给定一个N阶方阵int[][](C++中为vector<vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector<vector>),保证n小于等于300,矩阵中的元素为i
阅读全文
摘要:【题目】 【代码】 【题目2】 只有一个字符不需要写数字。 【代码】
阅读全文
摘要:【题目】 【代码实现】 方法一:较简单 方法二:比较麻烦 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一个string iniString 为原始的串,以及串的
阅读全文
摘要:【题目】 【代码实现】 方法一:思想同方法三,但不用新建数据结构,而是用数组来统计字符次数,很有意思 方法二:对字符排序比较 方法三:使用HashMap:
阅读全文
摘要:题目: 代码实现: 方法一:双指针思想,前后指针所指向的字符交换,直至两指针相遇,交换完毕。 方法二:反转即从字符串最后一个字符输出即可。 方法一:双指针思想,前后指针所指向的字符交换,直至两指针相遇,交换完毕。
阅读全文
摘要:【题目】 解法: 1 不使用额外存储结构: 2 使用额外存储结构:
阅读全文

浙公网安备 33010602011771号