算法
文章平均质量分 83
数据结构与算法分析内容
LiZhen798
软件研发工程师
语言:Java,Go
展开
-
LRU算法四种实现方式介绍
LRU全称是LeastRecently Used,即最近最久未使用的意思。LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。实现LRU1. 用一个数组来存储数据,给每一个数据项标记一个访问时间戳,每次插入新数据项的时候,先把数组中存在的数据项的时间戳自增,并将新数据项的时间戳置为0并插入到数组中。每次访问数组中的数据项的时候,将被访问的数据项的时间戳置为0。当数组空间已...转载 2021-03-17 20:40:25 · 2601 阅读 · 0 评论 -
n层嵌套for循环的执行次数
package test;public class Fortest { public static void main(String[] args) { int x=0; int n=3; for (int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ for(int k=1;k<=j;k++){...原创 2019-08-10 18:36:39 · 5064 阅读 · 0 评论 -
冒泡排序
package cn.paixu;public class MaoPao {public static void main(String[] args) {int[]h={1,2,5,8,3};MaoPao maoPao=new MaoPao();maoPao.Method1(h); maoPao.ShuChu(h);}void Method1(int [...原创 2017-06-27 19:45:04 · 221 阅读 · 0 评论 -
面试(动态规划算法之:最长公共子序列 & 最长公共子串(LCS))
收藏 1、先科普下最长公共子序列 & 最长公共子串的区别:找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。2、最长公共子串 其实这是一个序贯决策问题,可以用动态规划来求解。我们采用一个二维矩阵来记录中间的结果。这个二维矩阵怎么构造呢?直接举个例子吧:"bab"和"caba"(当然我们现在一眼就可以看出来最长...转载 2017-06-28 20:54:25 · 252 阅读 · 0 评论 -
二叉树前序遍历,中序遍历,后序遍历java实现
首先来看一棵二叉树:1、前序遍历:前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。若二叉树为空则结束返回,否则:(1)访问根结点;(2)前序遍历左子树;(3)前序遍历右子树 ;需要注意的是:遍历左右子树时仍然采用前序遍历方法。可以看出前序遍历后,遍历结果为:6312549782、中序遍历:中序遍历首先遍历左子树,然后访问根...转载 2018-04-10 17:47:39 · 809 阅读 · 2 评论 -
剑指Offer面试题11(Java版):数值的整数次方
题目:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题1、自以为很简单的解法:由于不需要考虑大数问题,这道题看起来很简单,可能不少应聘者在看到题目30秒后就能写出如下的代码:[java] view plain copypublic转载 2018-01-11 20:29:07 · 233 阅读 · 0 评论 -
选择排序
选择排序与冒泡排序不同的地方在于,冒泡排序每次比较后都会进行排序。选择排序会选出最小(或者最大)才进行排序,其时间复杂度跟冒泡排序一样为O(n^2);package cn.paixu;public class MaoPao {public static void main(String[] args) {int[]h={1,2,5,8,3};MaoPao原创 2017-06-27 20:13:16 · 212 阅读 · 0 评论 -
n&(n-1)的妙用
题目分析:求一个int的n,写成二进制的形式有多少个1?1.用循环每次把n向右移动一位,判断n&1是否为1,这种方式会超时2.采用n&(n-1)[java] view plaincopypublic class Solution { // you need to treat n as an unsigne转载 2017-06-30 21:36:35 · 432 阅读 · 0 评论 -
JAVA求字符串数组交集、并集和差集
package string; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.Map; import java.util.Map.Entry; import java.util.Set; publ转载 2017-06-29 10:55:00 · 4830 阅读 · 0 评论 -
堆和栈的区别
堆和栈的区别,有一个64k的字符串,是放到堆上,还是放到栈上,为什么?答:只有引用及基本数据类型是直接存在栈上。对象类型可能是在堆、方法区、常量池中。如二楼所说,放到堆中还是放到栈中,jvm会根据你的数据类型决定。一般在栈中存放了编译期可知的各种基本数据类型,对象引用和returnAddress类型。在堆中存放对象实例1、栈区(stack)— 由编译器自动分配释放转载 2017-06-19 17:28:41 · 333 阅读 · 0 评论 -
递归问题 --自己调用自己
1.辗转相除法的递归调用问题:辗转相除法的解释:用较大的数M除以较小的数N,较小的数N和得出的余数R构成新的一对数,继续重复前面的除法(用较大的数除以较小的数),直到出现能够整除的两个数,其中较小的数(即除数)就是最大公约数。个人理解:辗转相除法可以较快的求出最大公约数,不过其实并不需要一直要用较大的数除以较小的数,即用两个数相除即可。(下面会说明理由)理由 :例 ...原创 2016-10-26 14:14:25 · 4665 阅读 · 0 评论