
程序员面试金典题解
Xd_Yu
这个作者很懒,什么都没留下…
展开
-
程序员面试金典题解 链表分割
题目描述编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。import java.util.*;/**public class ListNode { int val; ListNode next = null;原创 2016-06-28 22:53:27 · 389 阅读 · 0 评论 -
程序员面试金典题解 猫狗收容所
题目描述 有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。 给定一个操作序列int[][2] ope(C++中为vector<vector<int>>)代表所有事件。若第一个元素为1,则代表有动物进入收容所,第二个元素为动物的编号,正数代表狗,负数代表原创 2016-07-10 15:51:05 · 658 阅读 · 0 评论 -
程序员面试金典题解 双栈排序
题目描述请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。 给定一个int[] numbers(C++中为vector<int>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。 测试样例:[1,2,3,4,5]返回:[5,4,3,2,1]import ja原创 2016-07-10 16:04:33 · 498 阅读 · 0 评论 -
程序员面试金典题解 二叉树平衡检查
题目描述实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。 给定指向树根结点的指针TreeNode* root,请返回一个bool,代表这棵树是否平衡。解法一:(递归解法,但是getHeight()没有任何优化,同一个节点的高度可能会计算多次) 复杂度 Nlog(N)import java.util.*;/*public class TreeN原创 2016-07-10 17:31:32 · 317 阅读 · 0 评论 -
程序员面试金典题解 有向路径检查
题目描述对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径。 给定图中的两个结点的指针UndirectedGraphNode* a,UndirectedGraphNode* b(请不要在意数据类型,图是有向图),请返回一个bool,代表两点之间是否存在一条路径(a到b或b到a)。import java.util.*;/*public class UndirectedGraphNode原创 2016-07-10 18:22:30 · 417 阅读 · 0 评论 -
程序员面试金典题解 链式A+B
题目描述有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。 测试样例: {1,2,3},{3,2,1} 返回:{4,4,4}import java.util.*;/*public class L原创 2016-07-03 22:14:00 · 354 阅读 · 0 评论 -
程序员面试金典题解 回文链表
题目描述请编写一个函数,检查链表是否为回文。 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。 测试样例: {1,2,3,2,1} 返回:true {1,2,3,2,3} 返回:falseimport java.util.*;/*public class ListNode { int val; ListNode next = null原创 2016-07-04 10:53:51 · 353 阅读 · 0 评论