
剑指offer
zbuger
这个作者很懒,什么都没留下…
展开
-
用递归逆序一个单链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。public class HeapPrint { public static ListNode ReverseList(ListNode head) { if (head == null||head.next == null) { return head; } ListNode q = head.next;原创 2016-04-04 18:02:57 · 1095 阅读 · 0 评论 -
100的阶乘有多少个零
100! = 100*99*98*97*...*2*1 先看看结尾零是如何形成的:结尾零当一个5的倍数与2的倍数相乘时就会形成。所以我们只要计算有几对(2,5),就能知道有几个结尾零。 先来数5因子有几个:在100内,5作为因子的数有5, 10, 15, 20, 25... 总共有20个。但是注意到25, 50, 75, 100都包含了2个5作为因子(25=5*5,原创 2016-04-06 17:04:14 · 7242 阅读 · 0 评论 -
括号所有有效组合
实现一种算法,打印n对括号的全部有效组合(左右括号正确配对)核心思想: 1.左括号:只要左括号还没用完,就可以插入括号。 2.右括号:只要不造成语法错误,就可以插入右括号。即只要右括号比左括号还多,就会出现语法错误。以上两个是并列条件,总结的代码如下:import java.util.ArrayList;public class KuoHao {原创 2016-05-05 11:48:35 · 1384 阅读 · 0 评论 -
背包问题
背包问题 背包问题是计算机科学里的经典问题。在最简单的形式中,包括试图将不同重量的数据项放到 背包中.以使背包最后达到指定的总重量。不需要把所有的选项都放入背包中。 举例来说,假设想要背包精确地承重20磅,并且有5个可以选择 放入的数据项,它们的重量 依次为11磅、8磅、7磅、6磅和5磅。对于选择放入的数据项数量不大时,人类很善于通过观察 就可以解决这个问题。于是原创 2016-04-15 23:38:58 · 518 阅读 · 0 评论 -
寻找直方图中最大矩形
题目描述有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。测试样例:[2,7,9,4,1],5返回:14import j原创 2016-04-10 13:36:54 · 1129 阅读 · 0 评论 -
八皇后问题
题目描述请设计一种算法,解决著名的n皇后问题。这里的n皇后问题指在一个nxn的棋盘上放置n个棋子,使得每行每列和每条对角线上都只有一个棋子,求其摆放的方法数。给定一个int n,请返回方法数,保证n小于等于10测试样例:1输出:1import java.util.*; public class Queens { public int sum=0;原创 2016-04-08 15:26:07 · 386 阅读 · 0 评论 -
字符串的排列
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母这个题目跟求二叉树的路径是一个类型的,也要用到回溯的思想。public class S原创 2016-03-11 22:50:03 · 277 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。这个题目是比较难的一个,因为用到了回溯的思想,本身递归的实现就是用栈的结构来做的,所以每次做递归题要向栈这方面考虑。而且题目传递的是引用所以,考虑好数据“污染”很重要。public class Solution { pu原创 2016-03-11 22:47:51 · 296 阅读 · 0 评论 -
二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。对于位操作我是比较不愿意做的,因为内心就觉得二进制太长了,不适合阅读public int NumberOf1(int n) { int count = 0; while(n!= 0){ count++; n = n & (n - 1);原创 2016-03-11 22:44:35 · 345 阅读 · 0 评论 -
斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。简单的递归题目,但是当N足够大时,栈深度过大,爆栈,所以要用循环来做 public int Fibonacci(int n) { int tempt=0; int tempt1=1; int tempt2=1; if(n==0原创 2016-03-11 22:42:08 · 327 阅读 · 0 评论 -
大数据面试题
1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,原创 2016-04-18 20:58:37 · 921 阅读 · 0 评论