
剑指offer
Zacy
这个作者很懒,什么都没留下…
展开
-
剑指offer 丑数
题目描述 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 import java.util.*; public class Solution { public static int GetUglyNumber_Solution(int in原创 2017-03-27 15:13:04 · 347 阅读 · 0 评论 -
剑指offer 寻找中序遍历的下一个节点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路:首先知道中序遍历的规则是:左根右,然后作图 结合图,我们可发现分成两大类:1、有右子树的,那么下个结点就是右子树最左边的点;(eg:D,B,E,A,C,G) 2、没有右子树的,也可以分成两类,a)是父节点左孩原创 2017-03-27 16:56:14 · 1248 阅读 · 0 评论 -
剑指offer 二进制中1的个数
这种解法的思路是,二进制中1的个数只与1的位数有关,n & (n - 1)快速的去掉最左边的1,例如7(0111) & 6(0110)= 6(0110),快速的去掉了最左边的1 /** * Created by zj on 2017/3/11 0011. */ public class NumberOf1 { int count = 0; int numberOf1(i原创 2017-03-11 11:51:36 · 212 阅读 · 0 评论 -
单例模式 两种实现
1. 饿汉式单例类 public class SingletonClass { private static final SingletonClass instance=new SingletonClass(); //私有构造函数 private SingletonClass() {} public static SingletonClass getInstance() { retur原创 2017-03-11 11:27:36 · 245 阅读 · 0 评论 -
剑指offer 用两个栈实现队列
题目描述:用两个栈实现一个队列,实现队列的两个函数appendTail()和deleteHead(),分别在队列尾部插入节点,在头部删除节点。 import java.util.Stack; /** * Created by zj on 2017/3/11 0011. */ public class QueueT> { private StackT> stack1 = new原创 2017-03-11 11:24:17 · 335 阅读 · 0 评论 -
剑指offer 二维数组
题目:在一个二维数组中每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。完成一个函数,输入这样的数组和一个整数,判断数组中是否含有该整数。 思路:由于该二维数组从左到右,从上到下均为顺序递增的。因此右下角与左上角的数字均大于或小于其周围数字,如果选择改组作为起始点,则无法确定下一步的方向。而右上角的数字是同行最大值、同列最小值,选择该点为起始点则可以根据该数子与目标的比原创 2017-03-11 10:12:01 · 282 阅读 · 0 评论 -
剑指offer 数值的整数次幂,求base的exponent次方,不能使用库函数,同时不需要考虑大数问题
/** * Created by zj on 2017/3/13 0013. 数值的整数次幂,求base的exponent次方,不能使用库函数,同时不需要考虑大数问题 */ public class Exponent { public double power(double base,int exponent)throws Exception{ double resu原创 2017-03-13 23:22:21 · 607 阅读 · 0 评论 -
找到第k个最大的数
一、问题描述 给定一个数组,数组中的数据无序,在一个数组中找出其第k个最小的数,例如对于数组x,x = {3,2,1,4,5,6},则其第2个最小的数为2。 二、解题思路 本算法跟快排的思想相似,首先在数组中选取一个数centre作为枢纽,将比centre小的数,放到centre的前面将比centre大的数,放到centre的后面。如果此时centre的位置刚好为k,原创 2017-03-27 14:58:23 · 1227 阅读 · 0 评论