08 2014 档案

摘要:69.旋转数组中的最小元素(数组、算法)。题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为 1。我就用了最简单的方法。而且... 阅读全文
posted @ 2014-08-19 14:23 匡子语 阅读(475) 评论(0) 推荐(0) 编辑
摘要:30.在从 1 到 n 的正数中 1 出现的次数(数组)题目:输入一个整数 n,求从 1 到 n 这 n 个整数的十进制表示中 1 出现的次数。例如输入 12,从 1 到 12 这些整数中包含 1 的数字有 1, 10, 1 1 和 12, 1 一共出现了 5 次。思路:如1121 判断 千位 1... 阅读全文
posted @ 2014-08-19 10:57 匡子语 阅读(603) 评论(0) 推荐(0) 编辑
摘要:68.把数组排成最小的数(数组、算法)。题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字 32132。请给出解决问题的算法,并证明该算法。思路:首先,肯定要考虑溢出问题。开始想用字符串,后来改为了用... 阅读全文
posted @ 2014-08-18 20:22 匡子语 阅读(1535) 评论(0) 推荐(0) 编辑
摘要:67.俩个闲玩娱乐(运算)。2.n 个骰子的点数。把 n 个骰子扔在地上,所有骰子朝上一面的点数之和为 S。输入 n,打印出 S 的所有可能的值出现的概率。思路:用递归把每个骰子的可能情况变量,记录各种和S出现的次数 比上 总情况数就是概率/*67.俩个闲玩娱乐(运算)。2.n 个骰子的点数。把 n... 阅读全文
posted @ 2014-08-16 22:22 匡子语 阅读(685) 评论(0) 推荐(0) 编辑
摘要:67.俩个闲玩娱乐(运算)。1.扑克牌的顺子从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王可以看成任意数字。思路: 用min、max记录输入的牌对应的数字大小,不考虑王,用wnum记录王... 阅读全文
posted @ 2014-08-16 21:25 匡子语 阅读(750) 评论(0) 推荐(0) 编辑
摘要:66.颠倒栈(栈)。题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1 在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5 处在栈顶。思路:我自己没做出来,因为总觉得用不上递归。看了网上答案http://blog.csdn.net/cxllyg/article/details... 阅读全文
posted @ 2014-08-16 20:24 匡子语 阅读(817) 评论(0) 推荐(0) 编辑
摘要:65.输出 1 到最大的 N 位数(运算)题目:输入数字 n,按顺序输出从 1 最大的 n 位 10 进制数。比如输入 3,则输出 1、2、3 一直到最大的 3 位数即 999。思路:肯定要考虑数字溢出的情况,用字符串表示数字,模拟加法。/*65.输出 1 到最大的 N 位数(运算)题目:输入数字 ... 阅读全文
posted @ 2014-08-16 19:27 匡子语 阅读(334) 评论(0) 推荐(0) 编辑
摘要:题目:我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。例如 6、8 都是丑数,但 14 不是,因为它包含因子 7。习惯上我们把 1 当做是第一个丑数。求按从小到大的顺序的第 1500 个丑数。思路:1. 数字从1递增,判断是不是丑数2. 用2、3、5分别乘以已有的丑数,用大... 阅读全文
posted @ 2014-08-15 14:27 匡子语 阅读(908) 评论(0) 推荐(0) 编辑
摘要:63.在字符串中删除特定的字符(字符串)。题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。我的思路:先扫描第一个字符串,判断是否是第二的字符串的字符,是则... 阅读全文
posted @ 2014-08-15 12:23 匡子语 阅读(2504) 评论(0) 推荐(0) 编辑
摘要:76.复杂链表的复制(链表、算法)题目:有一个复杂链表,其结点除了有一个 m_pNext 指针指向下一个结点外,还有一个 m_pSibling 指向链表中的任一结点或者 NULL。其结点的 C++定义如下:struct ComplexNode{ int m_nValue;ComplexNode* m... 阅读全文
posted @ 2014-08-14 19:34 匡子语 阅读(299) 评论(0) 推荐(0) 编辑
摘要:61.找出数组中两个只出现一次的数字(数组)题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是 O(n),空间复杂度是 O(1)。思路:瞄到了一眼提示,说是位运算。根据异或的运算性质:a ⊕ b ⊕ a = b把所有的数字都异或一遍得到... 阅读全文
posted @ 2014-08-14 15:49 匡子语 阅读(520) 评论(0) 推荐(0) 编辑
摘要:60.在 O(1)时间内删除链表结点(链表、算法)。题目:给定链表的头指针和一个结点指针,在 O(1)时间删除该结点。链表结点的定义如下:struct ListNode{int m_nKey;ListNode* m_pNext;};函数的声明如下:void DeleteNode(ListNode*... 阅读全文
posted @ 2014-08-14 13:34 匡子语 阅读(306) 评论(0) 推荐(0) 编辑
摘要:56.最长公共字串(算法、字符串)。题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。例如:输入两个字符串... 阅读全文
posted @ 2014-08-14 10:43 匡子语 阅读(663) 评论(0) 推荐(0) 编辑
摘要:52.二元树的深度(树)。题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。例如:输入二元树: 10/ \6 14/ / \4 12 16输出该树的深度 3。二元树的... 阅读全文
posted @ 2014-08-13 17:02 匡子语 阅读(399) 评论(0) 推荐(0) 编辑
摘要:47.创新工场(算法):求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}思路:动态规划从最后一个数字开始,计算以当前数字其实的序列的最长递减子序列。 每次找最长子序列,都扫描它之前求得的子序列中最长,且第一个数字比当前数字小的。如: 第一个... 阅读全文
posted @ 2014-08-13 15:01 匡子语 阅读(2571) 评论(0) 推荐(0) 编辑
摘要:46.搜狐(运算):四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())跟12个人排高矮的题目差不多。 用 0 表示 “(”,用 1 表示“)” 则需要数字二进制最低8位有 4个1和 4个0,且从低位到高位对1 和 0 计数时,0 出现的次数不能超过 1 出现的次数。/*46... 阅读全文
posted @ 2014-08-13 10:09 匡子语 阅读(1557) 评论(0) 推荐(0) 编辑
摘要:45.雅虎(运算、矩阵):2.一个整数数组,长度为 n,将其分为 m 份,使各份的和相等,求 m 的最大值 比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1;{3,6}{2,4,3} m=2{3,3}{2,4}{6} m=3 所以 m 的最大值为 3回头再自己写!!网上答案,验证正... 阅读全文
posted @ 2014-08-13 09:31 匡子语 阅读(2822) 评论(0) 推荐(0) 编辑
摘要:45.雅虎(运算、矩阵):1.对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一,现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。这道题,是我目前为止做过的最最最最最麻烦、最繁琐的题目了。思路:把输入的矩阵一步步还原成 0 矩阵一个数字,只... 阅读全文
posted @ 2014-08-11 20:03 匡子语 阅读(1628) 评论(0) 推荐(1) 编辑
摘要:36.引用自网友:longzuo(运算)谷歌笔试: 19n 支队伍比赛,分别编号为 0,1,2。。。。n-1,已知它们之间的实力对比关系,存储在一个二维数组 w[n][n]中,w[i][j] 的值代表编号为 i,j 的队伍中更强的一支。所以 w[i][j]=i 或者 j,现在给出它们的出场顺序,... 阅读全文
posted @ 2014-08-11 12:23 匡子语 阅读(1087) 评论(0) 推荐(0) 编辑
摘要:转自:http://hi.baidu.com/gpmzccqceabimqq/item/f499f057aa1520404eff208b关键: 传入时强制类型转换 + 使用时自己手工寻址今天写程序的时候要用到二维数组作参数传给一个函数,我发现将二维数组作参数进行传递还不是想象得那么简单里,但是最后我... 阅读全文
posted @ 2014-08-11 11:04 匡子语 阅读(2154) 评论(0) 推荐(2) 编辑
摘要:35.(矩阵)求一个矩阵中最大的二维矩阵(元素和最大).如:1 2 0 3 42 3 4 5 11 1 5 3 0中最大的是:4 55 3要求:(1)写出算法;(2)分析时间复杂度;(3)用 C 写出关键代码早上灭小题!/*35.(矩阵)求一个矩阵中最大的二维矩阵(元素和最大).如:1 2 0 3 ... 阅读全文
posted @ 2014-08-11 09:17 匡子语 阅读(2102) 评论(0) 推荐(0) 编辑
摘要:32.(数组、规划)有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序;要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小。例如: var a=[100,99,98,1,2,3];var b=[1,2,3,4,5,40];首先,目标一定是先找到... 阅读全文
posted @ 2014-08-10 22:02 匡子语 阅读(5021) 评论(0) 推荐(0) 编辑
摘要:第 7 题(链表)微软亚院之编程判断俩个链表是否相交给出俩个单向链表的头指针,比如 h1,h2,判断这俩个链表是否相交。为了简化问题,我们假设俩个链表均不带环。问题扩展:1.如果链表可能有环列?2.如果需要求出俩个链表相交的第一个节点列?看到这个题目我很困惑。如果链表的结构是下面这个样子typede... 阅读全文
posted @ 2014-08-10 11:48 匡子语 阅读(1011) 评论(0) 推荐(0) 编辑
摘要:58.从尾到头输出链表(链表)。题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:struct ListNode{int m_nKey;ListNode* m_pNext;};我的思路:用一个数组存起来已有的数字,再反过来输出。缺点是数组大小是确定的 链表长度不能超过数... 阅读全文
posted @ 2014-08-09 17:55 匡子语 阅读(1417) 评论(0) 推荐(0) 编辑
摘要:54.调整数组顺序使奇数位于偶数前面(数组)。题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为 O(n)。小题,秒灭。/*54.调整数组顺序使奇数位于偶数前面(数组)。题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数... 阅读全文
posted @ 2014-08-09 16:45 匡子语 阅读(427) 评论(0) 推荐(0) 编辑
摘要:53.字符串的排列(字符串)。题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串 abc,则输出由字符 a、b、c 所能排列出来的所有字符串abc、acb、bac、bca、cab 和 cba。这道题花了我一天,要好好总结!思路:这道题目感觉有些难,主要是字符串中的字符可能会有重复。... 阅读全文
posted @ 2014-08-09 16:31 匡子语 阅读(7230) 评论(0) 推荐(0) 编辑
摘要:51.和为 n 连续正数序列(数组)。题目:输入一个正数 n,输出所有和为 n 连续正数序列。例如输入 15,由于 1+2+3+4+5=4+5+6=7+8=15,所以输出 3 个连续序列 1-5、 4- 6 和 7-8。分析:这是网易的一道面试题。一道简单的小题/*51.和为 n 连续正数序列(数组... 阅读全文
posted @ 2014-08-08 15:13 匡子语 阅读(530) 评论(0) 推荐(0) 编辑
摘要:73.对称字符串的最大长度(字符串)。题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出 4。虽然知道会有简单的方法,可脑子就是转不动了,只好用最常见的,对所有可能的字符串判断是否为对称的。再输出最大... 阅读全文
posted @ 2014-08-08 14:01 匡子语 阅读(976) 评论(0) 推荐(0) 编辑
摘要:74.数组中超过出现次数超过一半的数字(数组)题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。思路:分治算法 两两一对 相同留下一个 不同扔掉 多出来的数字单独对比/*74.数组中超过出现次数超过一半的数字(数组)题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字... 阅读全文
posted @ 2014-08-08 12:47 匡子语 阅读(707) 评论(0) 推荐(0) 编辑
摘要:75.二叉树两个结点的最低共同父结点(树)题目:二叉树的结点定义如下:struct TreeNode{int m_nvalue;TreeNode* m_pLeft;TreeNode* m_pRight;};输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。思路:修改后序遍历 我的方... 阅读全文
posted @ 2014-08-08 10:59 匡子语 阅读(483) 评论(0) 推荐(0) 编辑
摘要:80.阿里巴巴一道笔试题(运算、算法)问题描述:12 个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?我的思路:输入从小到大排列的数字 把数字4个分为一组 如下:min **** BA **** max其中第一个数字一定是当前最小的, 最后一个... 阅读全文
posted @ 2014-08-07 11:13 匡子语 阅读(4740) 评论(1) 推荐(0) 编辑
摘要:第 14 题(数组):题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是 O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组 1、2、4、7、11、15 和数字 15。由于 4+11=15,因此输出 4 和 ... 阅读全文
posted @ 2014-08-06 17:04 匡子语 阅读(6208) 评论(1) 推荐(0) 编辑
摘要:第 17 题(字符串):题目:在一个字符串中找到第一个只出现一次的字符。如输入 abaccdeff,则输出 b。思路:此题非常容易。 最开始是想开辟一块空间存储每个字符出现的次数。 但转念一想,似乎没有必要。 对每一个字符,都依次和后面的比较,若出现了两次,则检查下一个字符,遇到只出现一次的,直接输... 阅读全文
posted @ 2014-08-06 15:49 匡子语 阅读(4082) 评论(1) 推荐(0) 编辑
摘要:第 18 题(数组):题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字 0 开始,每次从这个圆圈中删除第 m 个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第 m 个数字。求出在这个圆圈中剩下的最后一个数字。思路:看到这道题,直... 阅读全文
posted @ 2014-08-06 15:02 匡子语 阅读(963) 评论(1) 推荐(0) 编辑
摘要:第 20 题(字符串):题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数 345。/*第 20 题(字符串):题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数 345。start time = 8:40e... 阅读全文
posted @ 2014-08-06 09:49 匡子语 阅读(9869) 评论(1) 推荐(0) 编辑
摘要:第 21 题(数组)2010 年中兴面试题编程求解:输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来.我的思路:从小到大 依次拼凑 后面选的数字 必须比前面大 保证不重复如: n = 4 m = 81 2 3... 阅读全文
posted @ 2014-08-05 21:28 匡子语 阅读(5027) 评论(1) 推荐(0) 编辑
摘要:http://blog.csdn.net/pongba/article/details/1561110 阅读全文
posted @ 2014-08-04 22:19 匡子语 阅读(136) 评论(0) 推荐(0) 编辑
摘要:27.跳台阶问题(递归)题目:一个台阶总共有 n 级,如果一次可以跳 1 级,也可以跳 2 级。求总共有多少总跳法,并分析算法的时间复杂度。这道题最近经常出现,包括 MicroStrategy 等比较重视算法的公司都曾先后选用过个这道题作为面试题或者笔试题。思路:不难 注意边界 就是时间复杂度我没求... 阅读全文
posted @ 2014-08-04 22:11 匡子语 阅读(791) 评论(1) 推荐(0) 编辑
摘要:第 16 题(树):题目(微软):输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 例如输入 8 / \6 10/ \ / \5 7 9 11输出 8 6 10 5 7 9 11。思路:之前做USACO和学算法的时候经常用的 广度优先搜索 1 /* ... 阅读全文
posted @ 2014-08-04 19:41 匡子语 阅读(461) 评论(0) 推荐(0) 编辑
摘要:第 15 题(树):题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。 例如输入:8/ \6 10/ \ / \5 7 9 11输出:8/ \10 6/ \ / \11 9 7 5定... 阅读全文
posted @ 2014-08-04 18:56 匡子语 阅读(432) 评论(0) 推荐(0) 编辑
摘要:1.把二元查找树转变成排序的双向链表(树)题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定... 阅读全文
posted @ 2014-08-04 16:16 匡子语 阅读(334) 评论(0) 推荐(0) 编辑
摘要:4.在二元树中找出和为某一值的所有路径(树)题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数 22 和如下二元树 10 / \ 5 12 / \4 7则打印出两条路径:10,... 阅读全文
posted @ 2014-08-04 14:24 匡子语 阅读(828) 评论(0) 推荐(0) 编辑
摘要:判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回 true,否则返回 false。例如输入 5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:8/ \6 10/ \ / ... 阅读全文
posted @ 2014-08-01 22:07 匡子语 阅读(756) 评论(0) 推荐(0) 编辑
摘要:看到这个问题,第一个反应是真变态啊。 然后,直觉是不能用循环就只能用递归了。可递归怎么跳出来却遇到了麻烦, 我连goto语句都考虑了也没弄好。后来想到一个非常NC的方法:查找表。 如果n限定一个比较小的范围直接用查找表好了。 但题目的目的肯定不是这样的.....后来,我转换了一下思路 1+2...+... 阅读全文
posted @ 2014-08-01 14:25 匡子语 阅读(2969) 评论(1) 推荐(0) 编辑