Interview
文章平均质量分 68
L_J_SHOU
从蛛丝马迹中寻找结果
展开
-
链表操作----将单链表向右旋转 K 个位置
给定一个单链表,设计一个算法实现链表向右旋转 K 个位置。 举例: 给定 1->2->3->4->5->6->NULL, K=3 则 4->5->6->1->2->3->NULL分析:1. 这道题目的关键在于找到 尾节点和旋转后新链表的尾节点。 假设是 tail, new->tail.然后只要进行 tail->next = head;原创 2014-02-22 11:40:01 · 3306 阅读 · 0 评论 -
Interview----用最快的方法计算 Fibonacci 数
输入 n, 用最快的方法求该 Fibocacci 数列的第 n 项。方法1: 递归,非常慢方法2: 迭代,因此计算 f[1] , f[2], f[3] ,,,, 复杂度 O(N)方法3:采用以上公式,计算 n 幂次的时候,才用二分的思想。可将复杂度提高到 O(lgN)具体代码如下。// copyright @ L.J.SHOU Mar.1原创 2014-03-12 22:08:04 · 1286 阅读 · 0 评论 -
Interview----求 1+2+...+n, 不能用乘除法、for、while if、else、switch、case 等关键字以及条件判断语句 (A?B:C)
题目描述:求 1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句 (A?B:C)。分析:首先想到的是写递归函数,但是遇到一个问题,递归函数总需要一个出口,不然会无穷递归下去。出口一半是 if() return. 题目又要求不能使用 if 语句。什么语句有类似与 if 的选择功能呢??原创 2014-03-05 19:33:37 · 5786 阅读 · 1 评论 -
Interview----2 sum
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是 O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组 1、2、4、7、11、15 和数字 15。由于 4+11=15,因此输出 4 和 11。分析:给出两种算法: 1. 枚举第一个,然后二分搜索第二个数。 O(NlgN)原创 2014-03-05 22:22:42 · 976 阅读 · 0 评论 -
Interview----链表的倒数第K个元素
这个题虽然简单,但是一定要细心,bug-free 能力很重要。分析: 如果不知道链表的长度,可以采用双指针的方法,让一个指针先走 k 步,然后两个指针同时走,前面的指针变成 NULL时, 第一个指针即是倒数第k 个节点。。但是,考虑 k length 等情况。。// copyright @ L.J.SHOU Mar.05, 2014// find the last原创 2014-03-05 21:43:51 · 1042 阅读 · 0 评论 -
Interview----First single charactor
题目:在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。分析:这道题是 2006 年 google 的一道笔试题。分析:用 Hash, 时间和空间复杂度是 O(N)当然,如果字符是 ASCII 编码的话,可以开一个 256长的数组来对每个字符出现的次数进行记录。// copyright @ L.J.SHOU Mar.10, 2原创 2014-03-10 21:02:12 · 843 阅读 · 0 评论 -
Interview----将一棵二叉树转换成其镜像
题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入: 8 / \ 6 10 / \ / \ 5 7 9 11输出: 8 / \ 10 6 / \ / \原创 2014-03-10 19:03:10 · 1392 阅读 · 0 评论 -
数据结构---设计一个栈,push, pop, min 时间复杂度都是 O(1)
普通的栈,push, pop 操作的复杂度是 O(1), 但是如果要找出其中的最小值,则需要 O(N)的时间。题目要求 min 复杂度也是 O(1), 做法便是 空间换时间,每一步栈的最小值都用一个数组记录下来。。// copyright @ L.J.SHOU Feb.17, 2014// design a stack// min, push, pop take O(1)原创 2014-02-19 08:48:29 · 3374 阅读 · 0 评论 -
Interview----判断两个链表是否相交?
题目描述:判断两个单链表是否相交?假设链表没有环。假如链表有环呢? 1. 假如没有环那么如果两个链表相交的话,必然最后的节点一定是同一个节点。所以只需要各自扫描一遍链表,找到最后一个节点,比较是否相同即可。O ( M + N)// version 1// test whether two lists are intersected// assume each原创 2014-02-28 12:37:20 · 1418 阅读 · 0 评论 -
Interview---一道有趣的推理题
题目描述:一个岛上原创 2014-02-28 16:44:04 · 1553 阅读 · 0 评论 -
微软面试100题---将 二叉搜索树 转化成 有序的双向链表
Description:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。二叉搜索树和双向链表的定义与实现参考: http://blog.csdn.net/shoulinjun/article/details/18449445 http://blog原创 2014-02-15 22:52:30 · 1095 阅读 · 0 评论 -
Interview----判断整数序列是否是二叉搜索树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这原创 2014-02-26 09:04:47 · 1320 阅读 · 0 评论 -
算法----Magic Index
给定一个数组 A,如果 某个下标 i, 满足 A[i] = i, 则 i 称为 Magic Index。现在假设 A 中的元素是递增有序的、且不重复,找出 Magic Index.更进一步,当数组中有重复的元素呢??分析:首先题目不难。最简单的当然是 扫描一遍数组,当然这个 O(N)的算法不是最优的。进一步思考,如今数组是递增的,可否采用 二分搜索,从而加速到 O(原创 2014-02-22 23:37:04 · 1589 阅读 · 0 评论 -
Interview----最长连续乘积字串
题目描述:给一个浮点数序列,取最大乘积连续子串的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积连续子串为3,0.5,8。也就是说,上述数组中,3 0.5 8这3个数的乘积3*0.5*8=12是最大的,而且是连续的。算法1:首先,枚举的话,复杂度是 O(N^2)算法2:O(N)首先发现这个题与最长连续子数组的和非常类似。考虑用 D.P.原创 2014-03-26 21:55:17 · 1041 阅读 · 0 评论