算法
lm709409753
天道酬勤
展开
-
重置二叉树
问题描述:根据二叉树的前序和后序遍历的结果,构建二叉树;代码实现package edu.liangman.offer;/** * Created by lm on 2017/1/3. */ public class RebuldBinTeee { public static TreeNode bulid(int[] pre,int preStart,int preEnd,int[] in,原创 2017-01-03 10:57:00 · 311 阅读 · 0 评论 -
旋转数组中的最小值
问题如果有一个序列,后一个元素大于等于前一个算数,然后旋转数组的元素,把前面的元素放到序列的后面; 例如原始数据为: 1,2,3,4,5,6 其中的一个选装为: 3,4,5,6,1,2 然后求旋转后的数组中的最小值 思路:其实最简单的就是遍历一遍数组,冒泡一下,其时间复杂度为O(n);有没有什么可以改进一下那,要充分利用已知条件,旋转后的数组可以化为两个有序的子数组,对于有序的数组可以采原创 2017-01-03 14:54:48 · 257 阅读 · 0 评论 -
二进制1的个数
说明:题目如标题package edu.liangman.offer;/** * Created by lm on 2017/1/4. */ public class Num0fOne { public static void method1(int number){ int flag = 1; int count = 0; while(f原创 2017-01-04 16:27:55 · 234 阅读 · 0 评论 -
替换空格为%20
1.题目 2.理解 可以从前往后依次遍历其内容,如果为’ ‘字符,做替换,但是每次后面的数据都要移动,使其时间复杂度变大,从前面不行,我们就可以从后面,改变移动的次数; 3.代码package edu.liangman.offer;/** * Created by lm on 2016/12/31. */ public class ReplaceSpace { //定义一个替原创 2016-12-31 15:32:32 · 283 阅读 · 0 评论 -
归并排序
1、复杂度分析 总的时间复杂度为O(nlogn),而且这是归并排序算法中最好、最坏、平均的时间性能。 由于归并排序在归并过程中需要与原始序列同样数量的存储空间存放归并结果以及递归时深度为这里写图片描述的栈空间,因此空间复杂度为O(n+logn). 另外,对代码进行仔细研究,发现merge函数中有if (a[i] < a[j]) 的语句,说明它需要两两比较,不存在跳跃,因此归并排序是一种稳定原创 2016-12-31 19:31:32 · 280 阅读 · 0 评论 -
KMP
package edu.liangman.offer;/** * Created by lm on 2017/1/1. */ public class KMP { public int[] getNext(String b) { int len=b.length(); int j=0; int next[]=new int[len+1];//next表示长度为i的字符串前缀原创 2017-01-01 15:41:51 · 266 阅读 · 0 评论