
算法
文章平均质量分 51
Zacy
这个作者很懒,什么都没留下…
展开
-
简单算法
空间复杂度类似于时间复杂度的讨论,一个算法的空间复杂度(SpaceComplexity)S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也常常简称为空间复杂度。空间复杂度(SpaceComplexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空转载 2016-09-14 11:01:30 · 256 阅读 · 0 评论 -
剑指offer 平衡二叉树判别
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。左右子树的高度的绝对值不能大于1。代码实现:public class Solution { public boolean IsBalanced_Solution(TreeNode root) { if(root == null){ return true;原创 2017-04-23 21:00:37 · 343 阅读 · 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 评论 -
堆排序 java实现
堆排序算法介绍堆是一种重要的数据结构,为一棵完全二叉树, 底层如果用数组存储数据的话,假设某个元素为序号为i(Java数组从0开始,i为0到n-1),如果它有左子树,那么左子树的位置是2i+1,如果有右子树,右子树的位置是2i+2,如果有父节点,父节点的位置是(n-1)/2取整。分为最大堆和最小堆,最大堆的任意子树根节点不小于任意子结点,最小堆的根节点不大于任意子结点。所谓堆排序就是利用堆原创 2017-03-27 11:09:42 · 417 阅读 · 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 评论 -
剑指offer 二维数组
题目:在一个二维数组中每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。完成一个函数,输入这样的数组和一个整数,判断数组中是否含有该整数。思路:由于该二维数组从左到右,从上到下均为顺序递增的。因此右下角与左上角的数字均大于或小于其周围数字,如果选择改组作为起始点,则无法确定下一步的方向。而右上角的数字是同行最大值、同列最小值,选择该点为起始点则可以根据该数子与目标的比原创 2017-03-11 10:12:01 · 282 阅读 · 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 评论 -
单例模式 两种实现
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 二进制中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 评论 -
剑指offer 寻找中序遍历的下一个节点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:首先知道中序遍历的规则是:左根右,然后作图 结合图,我们可发现分成两大类:1、有右子树的,那么下个结点就是右子树最左边的点;(eg:D,B,E,A,C,G) 2、没有右子树的,也可以分成两类,a)是父节点左孩原创 2017-03-27 16:56:14 · 1248 阅读 · 0 评论 -
剑指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 评论 -
阿里实习在线编程测试--数组四等分
/** 请完成下面这个函数,实现题目要求的功能 **//** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^ **//** * * 对于一个长度为N的整型数组A, 数组里所有的数都是正整数,对于两个满足0 用三个下标 m1, m2, m3下标满足条件 0 可以把这个整型数组分成(0, m1-1), (m1+1, m2-1), (m2+1, m3-1), (m转载 2017-03-08 12:09:22 · 2184 阅读 · 1 评论 -
选择排序算法 java实现
public class Selection{public static void sort(Comparable[] a){int N = a.length;for(int i = 0;iint min = i;for(int j=i+1;jif(less(a[j],a[min])){min = j; }}exch(a,i,min);}原创 2016-11-17 15:16:47 · 264 阅读 · 0 评论 -
经典的二分查找 java实现
public class BinarySearch{public static int rank(int key,int[] a){int lo = 0; int hi = a.length -1;while(lo int mid = lo + (hi - lo)/2;if(key hi = mid -1;}else if(key>a[mid]){原创 2016-11-16 22:17:34 · 354 阅读 · 0 评论 -
剑指offer 重建二叉树
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。注:传入两个数组,一个是前序遍历序列,一个是中序遍历序列。解答:在二叉树的前序遍历序列中,第一个数字总是树的根节点的值。但原创 2017-04-23 20:56:12 · 284 阅读 · 0 评论