程序员面试金典
VictorLeeLk
我是世界的某个BUG
展开
-
[程序员面试金典]元素查找
题目描述 有一个排过序的数组,包含n个整数,但是这个数组向左进行了一定长度的移位,例如,原数组为[1,2,3,4,5,6],向左移位5个位置即变成了[6,1,2,3,4,5],现在对于移位后的数组,需要查找某个元素的位置。请设计一个复杂度为log级别的算法完成这个任务。 给定一个int数组A,为移位后的数组,同时给定数组大小n和需要查找的元素的值x,请返回x的位置(位置从零开始)。保证数组中元素原创 2017-05-03 13:26:45 · 552 阅读 · 0 评论 -
[程序员面试金典]-链表反转
package niuke;public class MaxNum { //链表反转 public ListNode reverseList(ListNode pHead){ if(pHead==null) return null; ListNode pre=null; //ListNode cur=pHead.原创 2017-07-14 17:46:54 · 372 阅读 · 0 评论 -
[LeetCode]路径和2
题目:输入一颗二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。该路径可以从任意点到叶节点。 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回: [ [5,4,11,2], [5,8原创 2017-06-26 21:21:32 · 354 阅读 · 0 评论 -
[LeetCode]路径和
问题:给定一颗二叉树和一个值,判断是否存在从根节点到叶子节点的路径和等于给定的值。 分析:题目并未说明该二叉树是二叉搜索树,所以认为是一个普通的二叉树。可以采用递归的方式解答,首先判断当前遍历节点的值与之前的遍历过节点的和是否等于给定的值,如果等于且左右孩子节点为null,则认为存在这样的一条路径,使得从根节点到叶子节点这条路径的和等于给定的值。如果不等于,则遍历左子树和右子树,如果其中一个遍历的原创 2017-06-26 19:41:48 · 864 阅读 · 1 评论 -
[进军硅谷]将二叉搜索树转化为一个有序的循环链表
输入:一颗二叉搜索树 输出:有序的循环链表 思路:死采用中序遍历,对于每一个遍历的节点,将该节点的左指针指向前面一个节点,与此同时,将前一个节点的右指针指向该遍历的节点。同时注意两点:没有对head节点进行赋值最后一个节点的右指针没有指向第一个节点解决方法:每次递归调用的时候,更新当前节点的右指针指向head节点,更新head节点的左指针为当前节点。如果pre节点为空,则更新head节点为原创 2017-06-26 12:11:11 · 377 阅读 · 0 评论 -
[程序员面试金典]-链式A+B
题目描述 有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。 测试样例: {1,2,3},{3,2,1} 返回:{4,4,4} 思路:只要链表还有未处理的节点,或者还有进位(即进位不为0),就进原创 2017-07-13 22:59:16 · 392 阅读 · 0 评论 -
[程序员面试金典]-链表分割
编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。 代码如下:package niuke;/* * 0713 */public class Partion { public ListNode partition(Li原创 2017-07-13 11:22:58 · 402 阅读 · 0 评论 -
[JAVA程序员面试金典]最长递增子序列
最简单的思路是动态规划,数组array表示输入的数组,用一个数组dp记录子串每一位的最长递增子串长度,采用公式 dp[i]=max(dp[i],dp[j]+1)其中j<i,并且array[i]>array[j]dp[i]=max(dp[i],dp[j]+1) 其中j<i,并且array[i]>array[j] 代码如下:package niuke;/* * 最长递增子序列 * 17/6/原创 2017-06-08 22:29:27 · 2320 阅读 · 0 评论 -
[程序员面试金典]叠罗汉2-二维数组
题目描述 叠罗汉是一个著名的游戏,游戏中一个人要站在另一个人的肩膀上。为了使叠成的罗汉更稳固,我们应该让上面的人比下面的人更轻一点。现在一个马戏团要表演这个节目,为了视觉效果,我们还要求下面的人的身高比上面的人高。请编写一个算法,计算最多能叠多少人,注意这里所有演员都同时出现。 给定一个二维int的数组actors,每个元素有两个值,分别代表一个演员的身高和体重。同时给定演员总数n,请返回最多能原创 2017-06-15 21:47:34 · 831 阅读 · 0 评论 -
[程序员面试金典-查找]矩阵元素查找
题目描述 有一个NxM的整数矩阵,矩阵的行和列都是从小到大有序的。请设计一个高效的查找算法,查找矩阵中元素x的位置。 给定一个int有序矩阵mat,同时给定矩阵的大小n和m以及需要查找的元素x,请返回一个二元数组,代表该元素的行号和列号(均从零开始)。保证元素互异。 测试样例: [[1,2,3],[4,5,6]],2,3,6 返回:[1,2]思路:首先选取数组中右上角的数字。如果改数字等于原创 2017-05-03 15:10:23 · 908 阅读 · 0 评论 -
[程序员面试金典-查找-]找出字符串
题目描述 有一个排过序的字符串数组,但是其中有插入了一些空字符串,请设计一个算法,找出给定字符串的位置。算法的查找部分的复杂度应该为log级别。 给定一个string数组str,同时给定数组大小n和需要查找的string x,请返回该串的位置(位置从零开始)。 测试样例: [“a”,”b”,”“,”c”,”“,”d”],6,”c” 返回:3代码如下:package niuke;/**原创 2017-05-03 14:22:22 · 514 阅读 · 0 评论 -
[LeetCode] 114. Flatten Binary Tree to Linked List
Given a binary tree, flatten it to a linked list in-place.For example, Given 1 / \ 2 5 / \ \ 3 4 6The flattened tree should look like:1 \ 2 \ 3 \ 4 \原创 2017-06-27 11:56:15 · 340 阅读 · 0 评论