随笔分类 -  Microsoft100

微软面试100道
摘要:问题描述Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n.For example:Given n = 13,Retu... 阅读全文
posted @ 2015-07-12 21:16 Chapter 阅读(273) 评论(0) 推荐(0)
摘要:问题描述输入两个整数序列,其中一个为入栈序列,另一个为出栈序列。判断出栈序列是否是合法的。解决思路使用一个辅助栈,用最直观的方式。程序public class ValidPopSequence { public boolean isValidPopSeq(int[] push, int[] pop)... 阅读全文
posted @ 2015-07-10 10:45 Chapter 阅读(155) 评论(0) 推荐(0)
摘要:问题描述输入1个整数,求其二进制表示中有多少个“1”。解决思路1. 不断右移,碰到1与0与,计数;(对于负数不可,会死循环);2. 与(n-1)与,相当于清除最右端的“1”,计数。程序思路2:public class NumOfOne { public int getNumOfOne(int num... 阅读全文
posted @ 2015-07-10 10:02 Chapter 阅读(136) 评论(0) 推荐(0)
摘要:问题描述一个台阶有n级,一次可以跳1级或者2级。问共有多少种跳法?分析算法的时间复杂度。解决思路假设f(n)代表n级台阶的跳法数目,其递推式如下:当n=1时,f(n)=1;当n=2时,f(n)=2;其他,f(n)=f(n-1)+f(n-2)那么有如下几种解决方法:1. 递归,指数级时间复杂度;2. ... 阅读全文
posted @ 2015-07-10 09:52 Chapter 阅读(168) 评论(0) 推荐(0)
摘要:问题描述定义字符串的左旋转操作:将字符串前面的若干个字符移动到字符串的尾部。例如,字符串“abcdef”左旋转2位得到“cdefab”。要求实现的算法时间复杂度为O(n),常数级空间复杂度。解决思路整体翻转+部分翻转程序public class LeftRotateString { public v... 阅读全文
posted @ 2015-07-10 09:46 Chapter 阅读(248) 评论(0) 推荐(0)
摘要:问题描述在字符串中找出连续最长的数字串,并将该串返回。(略有修改)解决思路双指针法。一前一后,注意保存最长连续数字串的开始或者结束位置和最长串的长度,最后返回该子串即可。程序public class LongestContinuousDigits { public String getLCD(Str... 阅读全文
posted @ 2015-07-10 09:36 Chapter 阅读(206) 评论(0) 推荐(0)
摘要:问题描述将原题简单化,在二维平面上怎么判断一个矩形(已知四个矩形的角的坐标)和一个圆(已知圆心坐标和半径)是否相交?解决思路枚举各种情况。但是有简单的处理方式。如下图(字丑勿怪= =)程序比较简单,就忽略了>< 阅读全文
posted @ 2015-07-10 09:29 Chapter 阅读(314) 评论(0) 推荐(0)
摘要:程序 public class ListReverse { public ListNode reverseList(ListNode head) { if (head == null) { return head; } ListNode pre = head; ListNode cur ... 阅读全文
posted @ 2015-07-08 10:37 Chapter 阅读(147) 评论(0) 推荐(0)
摘要:问题描述输入两个整数n和m,从数列1,2,3,...,n中随意取出几个数。使其和等于m,把所有符合的组合列出来。解决思路dfs,注意:1. 一个元素只能使用一次;2. 保证输出的集合不重复。程序public class SubsetSum { public List> getSubset(int n... 阅读全文
posted @ 2015-07-08 10:30 Chapter 阅读(204) 评论(0) 推荐(0)
摘要:问题描述求Fibonacci数列的第n项。Fibonacci数列为1,1,2,3,5,...解决思路(1) 递归,指数级时间复杂度;(2) 循环,O(n)时间复杂度;(3) 矩阵乘法,O(logn)时间复杂度;(4) 公式法,O(1)时间复杂度。程序public class Fibonacci { ... 阅读全文
posted @ 2015-07-06 10:19 Chapter 阅读(227) 评论(0) 推荐(0)
摘要:问题描述n个数字(0,1,...,n-1)形成一个圆圈,从数字0开始。每次从这个圆圈中删除第m个数字,然后从被删除的下一个继续删除第m个元素,以此类推。直到最后剩下一个数字,求出该数字。解决思路1. 使用循环链表模拟这一过程,计数器计数;2. 递归思路(图片来源:http://www.cnblogs... 阅读全文
posted @ 2015-07-06 10:04 Chapter 阅读(565) 评论(0) 推荐(0)
摘要:问题描述在一个字符串中找到第一个只出现一次的字符。如输入字符串"abbc",应该输出字符'a'。程序public class FirstCharacter { // Time/Space: O(n) public char findFirstAppearChar(String s) { if (s... 阅读全文
posted @ 2015-07-03 10:26 Chapter 阅读(174) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/harrygogo/p/4599097.html中的层次遍历。 阅读全文
posted @ 2015-07-03 09:46 Chapter 阅读(112) 评论(0) 推荐(0)
摘要:问题描述输入一颗BST,将该树转换为它的镜像。要求使用递归和非递归两种思路解决。解决思路非递归基于BST。程序public class MirrorOfBST {public void toMirrorRec(TreeNode root) { if (root == null) { return ... 阅读全文
posted @ 2015-07-03 09:44 Chapter 阅读(149) 评论(0) 推荐(0)
摘要:问题描述输入一个单向链表,输出该链表中倒数第K个节点,定义倒数第1个节点为链表的尾节点。如果K值超过链表长度,那么抛出异常。解决思路双指针法。程序public class LastKthNodeOfList { public ListNode getLastKthNodeOfList(ListNod... 阅读全文
posted @ 2015-07-03 09:02 Chapter 阅读(133) 评论(0) 推荐(0)
摘要:问题描述输入一个句子,翻转句子中单词的顺序,但是单词内字符的顺序不变。解决思路(1)整体翻转;(2)单词翻转。程序public class ReverseWords { public String reverseWords(String s) { if (s == null || s.length... 阅读全文
posted @ 2015-07-02 10:23 Chapter 阅读(161) 评论(0) 推荐(0)
摘要:问题描述RT.如果把二叉树看做是一张图,父子节点的连线看成是双向的,距离的定义为两个节点之间变得数目。解决思路求根节点的左子树的高度和右子树的高度,相加。程序public class MaxDistanceInTree { public int getMaxDistanceInTree(TreeNo... 阅读全文
posted @ 2015-07-02 10:21 Chapter 阅读(251) 评论(0) 推荐(0)
摘要:问题描述输入一个整数序列,判断该序列是否为一颗BST的后序遍历序列。解决思路递归:(1)序列的最后一个元素为根节点元素;(2)在序列中找出前一段代表根节点的左子树孩子们,而剩下的一段为右子树孩子们,检查这些节点的值是否都是大于(等于根节点元素)。(3)然后递归的对两部分进行判断。程序public c... 阅读全文
posted @ 2015-07-02 09:50 Chapter 阅读(190) 评论(0) 推荐(0)
摘要:问题描述RT.解决思路(1)两链表都是单向链表:判断两链表的末尾节点是否相同;(2)两链表中一个有环,一个没环:不可能相交;(3)两链表都有环:slow-fast双指针方法。程序public class ListIntersection { // two single list public boo... 阅读全文
posted @ 2015-07-01 18:41 Chapter 阅读(174) 评论(0) 推荐(0)
摘要:问题描述输入一个整形数组和K,输出数组中前K大的元素们。解决思路思路1:排序如果用快排,平均时间复杂度为O(nlogn),最坏时间复杂度为O(n^2);空间复杂度为O(logn)~O(n);如果用堆排,时间复杂度为O(nlogn),空间复杂度为O(1).注意:Java中Arrays.sort()方法... 阅读全文
posted @ 2015-06-29 11:52 Chapter 阅读(160) 评论(0) 推荐(0)