![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
PhoenixDead
这个作者很懒,什么都没留下…
展开
-
MS100 [041-060]
MS100 [046] 括号排列数 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(()) 思路:12种 MS100 [047] 最长递减子序列 求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2} 思路:经典动态规划,方案一,记录max[i]为以a[i]接尾的最长递减子序列长度,从0到n-1不断更新m原创 2012-10-08 21:55:46 · 499 阅读 · 0 评论 -
MS100 [002-010]
MS100 [002] 设计包含min 函数的栈 定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。 要求函数min、push 以及pop 的时间复杂度都是O(1)。 思路:关键在于pop时能正确得到min为栈中剩下元素的最小值。所以定义栈中的元素为 struct MinStackElement { int data; int min;//保存以当前元素为栈顶原创 2012-10-06 01:36:15 · 455 阅读 · 0 评论 -
MS100 [011-020]
MS100 [011] 求二叉树中节点的最大距离 思路:在某个子树中,最大距离是左子树中最长枝到右子树中最长枝的距离。简单的递归,每次递归中,返回值用max(left,right)+1,当前节点所在子树的最大距离为max(left)+max(right),用一个引用变量记录最大的距离值。 MS100 [013] 输出该链表中倒数第k个结点 输入一个单向链表,输出该链表中倒数第k个原创 2012-10-07 23:08:42 · 585 阅读 · 0 评论 -
MS100 [021-040]
MS100 [021] 编程求解: 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数, 使其和等于m ,要求将其中所有的可能组合列出来. 思路:纯编程题,只能暴力求解。 MS100 [024] 反转单链表和合并链表 思路:反转注意处理头尾,编程题。 合并两个链表时,可用: while(lista!=null || listb!=null){ if原创 2012-10-08 00:56:34 · 951 阅读 · 0 评论 -
MS100 [061-070]
MS100 [061] 找出数组中两个只出现一次的数字 题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。 请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 思路:使用异或运算。 第一遍,全部异或,得到A,A中至少有一位为1,记为t位。 第二遍,对数组中的任意一个数,若t位为1,则与C异或,若t位为0,则与D异或。最后的C,D即为所求原创 2012-10-09 16:36:24 · 409 阅读 · 0 评论 -
MS100[001]
MS100[1] 题目:把二元查找树转变成排序的双向链表 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 方案一: BSTreeNode * treeToLinkedList(BSTreeNode * ro原创 2012-10-05 22:47:32 · 515 阅读 · 0 评论