导航

随笔分类 -  程序员面试金典题目

摘要:题目描述有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式。为了防止溢出,请将结果Mod 1000000007给定一个正整数intn,请返回一个数,代表上楼的方式数。保证n小于等于100000。测试样例:1返回:1代码如下:import j... 阅读全文

posted @ 2015-09-09 14:54 骄阳照林 阅读(137) 评论(0) 推荐(0)

摘要:题目描述请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继)。给定树的根结点指针TreeNode*root和结点的值intp,请返回值为p的结点的后继结点的值。保证结点的值大于等于零小于等于100000且没有重复值,若不存在后继返回-1。思路:中序遍历,将节点存入队列,对队列操作代码... 阅读全文

posted @ 2015-09-09 14:25 骄阳照林 阅读(215) 评论(0) 推荐(0)

摘要:题目描述请实现一个函数,检查一棵二叉树是否为二叉查找树。给定树的根结点指针TreeNode*root,请返回一个bool,代表该树是否为二叉查找树import java.util.*;/*public class TreeNode { int val = 0; TreeNode left... 阅读全文

posted @ 2015-09-05 18:24 骄阳照林 阅读(194) 评论(0) 推荐(0)

摘要:题目描述对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。给定二叉树的根结点指针TreeNode*root,以及链表上结点的深度,请返回一个链表ListNode,代表该深度上所有结点的值,请按树上从左往右的顺序链接,保证深度不超过树的高度,树上结点的值为非负整数且不超过100000。... 阅读全文

posted @ 2015-09-05 16:48 骄阳照林 阅读(185) 评论(0) 推荐(0)

摘要:题目描述对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。给定一个有序序列int[]vals,请返回创建的二叉查找树的高度。返回高度的代码如下:import java.util.*;public class MinimalBST { public int... 阅读全文

posted @ 2015-08-31 22:26 骄阳照林 阅读(147) 评论(0) 推荐(0)

摘要:题目描述对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径。给定图中的两个结点的指针UndirectedGraphNode*a,UndirectedGraphNode*b(请不要在意数据类型,图是有向图),请返回一个bool,代表两点之间是否存在一条路径(a到b或b到a)。思想:广度优先搜... 阅读全文

posted @ 2015-08-29 17:23 骄阳照林 阅读(121) 评论(0) 推荐(0)

摘要:题目描述实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。给定指向树根结点的指针TreeNode*root,请返回一个bool,代表这棵树是否平衡。思想:分治法(手段) 递归(处理方法)代码如下:import java.util.*;/*publi... 阅读全文

posted @ 2015-08-29 13:10 骄阳照林 阅读(159) 评论(0) 推荐(0)

摘要:题目描述:按升序对栈进行排序(最大元素位于栈顶)。最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中(如数组)。该栈支持如下操作:push、pop、peek、isEmpty.代码如下:解析参考编程金典p144页public Stacksort(Stacks){ Stackrt... 阅读全文

posted @ 2015-08-26 22:11 骄阳照林 阅读(127) 评论(0) 推荐(0)

摘要:题目描述请编写一个函数,检查链表是否为回文。给定一个链表ListNode*pHead,请返回一个bool,代表链表是否为回文。测试样例:{1,2,3,2,1}返回:true{1,2,3,2,3}返回:false代码如下:import java.util.*;/*public class ListNo... 阅读全文

posted @ 2015-08-26 20:44 骄阳照林 阅读(151) 评论(0) 推荐(0)

摘要:题目描述有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。给定两个链表ListNode*A,ListNode*B,请返回A+B的结果(ListNode*)。测试样例:{1,2,3},{3,2,1}返回:{4,... 阅读全文

posted @ 2015-08-25 22:10 骄阳照林 阅读(216) 评论(0) 推荐(0)

摘要:题目描述编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode*pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。代码如下:import java.util.*;/*public class Li... 阅读全文

posted @ 2015-08-25 16:31 骄阳照林 阅读(185) 评论(0) 推荐(0)

摘要:题目描述实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true思想:前后节点,值复制代码如下:import java.util.*;/*public class ListNode { int val;... 阅读全文

posted @ 2015-08-25 16:03 骄阳照林 阅读(118) 评论(0) 推荐(0)

摘要:题目描述假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区... 阅读全文

posted @ 2015-08-25 10:35 骄阳照林 阅读(113) 评论(0) 推荐(0)

摘要:题目描述请编写一个算法,若MxN矩阵中某个元素为0,则将其所在的行与列清零。给定一个MxN的int[][]矩阵(C++中为vector)mat和矩阵的阶数n,请返回完成操作后的int[][]矩阵(C++中为vector),保证n小于等于300,矩阵中的元素为int范围内。测试样例:[[1,2,3],... 阅读全文

posted @ 2015-08-24 22:09 骄阳照林 阅读(112) 评论(0) 推荐(0)

摘要:题目描述给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。给定一个stringstringA和一个stringstringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。测试样... 阅读全文

posted @ 2015-08-22 19:55 骄阳照林 阅读(119) 评论(0) 推荐(0)

摘要:题目描述请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。给定一个stringiniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。测试样例:"This is nowcoder"返回:"redocwon s... 阅读全文

posted @ 2015-08-22 19:12 骄阳照林 阅读(147) 评论(0) 推荐(0)

摘要:题目描述请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。给定一个stringiniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。测试样例:"... 阅读全文

posted @ 2015-08-22 18:52 骄阳照林 阅读(144) 评论(0) 推荐(0)

摘要:题目描述利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组... 阅读全文

posted @ 2015-08-22 18:46 骄阳照林 阅读(144) 评论(0) 推荐(0)