算法
文章平均质量分 99
卜困
大家一起喜羊羊
展开
-
--算法--基于BigDecimal实现简单的红包算法(Java实现)
目录一.问题说明二.使用到的类1、BigDecimal(1)为什么要用BigDecimal?2、AtomicInteger(1)为什么要用AtomicInteger?三.算法完整实现四.总结一.问题说明现有A,B,C三人,A今天抽奖抽中¥20.5元,打算发个红包试试今天的手气,然后就组装了一个红包,红包的金额为¥20.5,然后抢红包的人数设置为3人,那要如何实现一个算法使得红包能随机分配金额到每个人手中呢?并且三人抢到的红包金额加起来必须和发出来的金额相等,并且不能让人拿到¥0元红包,那该如何实现该算法原创 2020-07-23 13:38:08 · 409 阅读 · 4 评论 -
--算法--用HashMap简单实现LFU缓存算法(Java实现)
■ 什么是LFU?LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,也可以说是最近最少使用,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的...原创 2020-04-24 20:42:46 · 722 阅读 · 1 评论 -
--算法--用LinkedHashMap简单实现LRU缓存算法(Java实现)
■ 什么是LRU?LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。 —来源:百度百科LRU算法的思想是:如果一个数据在最近一段时间没有被访问到,那...原创 2020-04-24 10:32:38 · 690 阅读 · 0 评论 -
--算法--二分法查找算法 (Java实现)
什么是二分查找法?二分查找也称折半查找(BinarySearch),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。原理通过不断变化left,right指针的位置来不断接近目标值,采用递归实现时间复杂度最快:O(1)最坏:O(logn)平均时间复杂度:O(logn)代码实现public static void main...原创 2020-04-21 14:51:28 · 419 阅读 · 0 评论 -
--数据结构与算法--你很想弄明白的区别和实现(Java篇不定时更新)
♦ 往下进入知识海洋????■ 数据结构篇● 什么是数据结构?● 为什么我们需要数据结构?● 常用的数据结构数组数组常用方法1.数组的遍历:2.数组的打印3.判断数组中是否包含某个值4.将数组用新分隔符连接5.二分法查找6.数组的复制7.==数组的删除==8.将数组转成Set表9.数组的排序方法补充问题:1.ArrayList 和 LinedList 是线程安全的么,为什么?2. 如何解决线程安全问题?...原创 2020-04-12 22:11:02 · 451 阅读 · 0 评论 -
---算法--异或和与实现加法(文章无代码,纯笔记)
异或和与实现加法传递进来两个整数a,b ,将其都转成二进制进行 a&b 和a^b,若a&b结果为0,则不需要进位,若a&b结果不为0,例如111&1110=110 则需要进位成 1100(结果),随后将异或和与出来的结果c,d 再进行异或和与的操作,不断重复,直到 n&m的结果为0的时候,异或出来的结果即为两数二进制之和,后将异或出来的二进制转换为十进制即...原创 2020-03-24 19:56:34 · 1082 阅读 · 0 评论 -
--算法--二进制中1的个数(C语言)
下面介绍一种算法,整数中有几个1就只需要循环几次首先发现,把一个整数减去1,都是把最右边的1变为0。就像是1100-1=1011,第三位的1(下标从1开始),即1100最右边的1已经变为0。当然,如果它的右边还有0,则所有的0都变为1,就像上方的1100,最右边的1的右边的所有0已经全部变为1,而它左边的所有位都保持不变。接下来我们把***一个整数和它减去1的结果做位与运算,相当于把它们最右边...原创 2019-11-05 20:28:50 · 562 阅读 · 0 评论