剑指offer
diu_brother
阿里巴巴集团 javacoder
展开
-
二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解法:选择从右下角往上检索public class Solution { public boolean Find(int [][] array,int target) { if(array==null||a原创 2016-09-09 23:28:12 · 358 阅读 · 0 评论 -
替换空格
题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解题思路:依题意肯定不能用replace()函数,如果用String类其他函数,主要是注意不要遗漏各种情况解法:public String replaceSpace(StringBuffer str) { if(str==n原创 2016-09-10 00:04:25 · 367 阅读 · 0 评论 -
从尾到头打印链表
题目:输入一个链表,从尾到头打印链表每个节点的值。这是一道很基础的经典题,一看到这题就能立马想到三种方法:(1)使用栈(2)递归(3)反转链表后输出,介绍前两种,解法如下://使用栈/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val原创 2016-09-16 21:22:13 · 350 阅读 · 0 评论 -
重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路:其实就是一个递归的思想,先找到根节点,然后递归构建出左子节点和右子节点即可 解法如下:/** * Definition for binary t原创 2016-09-16 21:14:44 · 349 阅读 · 0 评论 -
用两个栈实现队列
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 经典题,不多说,直接上代码import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer原创 2016-09-16 22:04:11 · 336 阅读 · 0 评论 -
和为S的连续正数序列
题目:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述:输出所有和为S的连续正数序列。序列内原创 2016-09-23 01:03:32 · 507 阅读 · 0 评论