![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 95
常用算法记录与反思
二十六圈的人生操场
天有日月而照临万方,人有眼目而明见万象
展开
-
算法-计算n的阶乘以及n的累加
编写算法,计算下面表达式的值:1 + (1+2 + 1 * 2)+ (1+2+3 + 1 * 2 * 3) +…+ (1+2+…+n + 1 * 2 *…*n);public class AutoTest { public static Integer sum; /** * 编写算法,计算下面表达式的值 * 1 + (1+2 + 1*2)+ (1+2+3 + 1*2*3) +...+ (1+2+...+n + 1*2*...*n) * 1 * 1原创 2020-06-16 18:10:28 · 1326 阅读 · 1 评论 -
java数组-常用的四种排序算法及常用的功能
import java.util.Arrays;public class ArrayArith { // 对数组进行排序 方法1 冒泡排序 public static void sortArr(int[] arr){ if(arr == null || arr.length < 2){ return; } // 0 ~ N-1 // 1~n-1 // 2 fo原创 2020-06-04 16:17:37 · 163 阅读 · 0 评论 -
java实现一定精度的开根号运算
需求:在不借助系统库的情况下,编写一个函数,实现开根号的操作,并且保证一定的精度代码采用了牛顿迭代法以及二分查找法两种方式并分别打印了他们的循环次数以比较优劣:/** * 实现一个函数,完成对v开根号的操作,误差小于t,不能调用函数库 */public class Sqrt{ /** * 可以使用牛顿迭代法 * 首先随便猜一个近似值x,然后不断令x等于x和a/x的平均数,迭代个六七次后x的值就已经相当精确了 */ public static doub原创 2020-06-03 15:47:58 · 1519 阅读 · 3 评论 -
手撕时间复杂度为O(1)的LRU算法
LRU算法LRU(Least Recently Used),即最近最少使用算法。常用于实现一个简单的缓存功能,就是把很久未使用的直接移除掉,只保留最近使用的。LRU主要需要实现两个功能添加缓存(涉及到删除缓存)获取缓存实现原理一个单链表就能实现简单的LRU算法:但是链表的查找时间复杂度比较高了,是O(n)。一个散列表+双链表实现一个O(1)复杂度的LRU算法:用散列表就可以直接定位某个缓存,时间复杂度O(1),但是散列表插入缓存之后,就没有了顺序,所以才需要一个链表来维护这个缓存的顺序,超过缓原创 2020-05-31 12:45:58 · 816 阅读 · 1 评论 -
详解二分查找(常规及旋转)
二分查找算法框架int binarySearch(int[] nums, int target) { int left = 0, right = ...; while(...) { int mid = (right + left) / 2; if (nums[mid] == target) { ... } else if (nums[mid] < target) { left = ...原创 2020-05-21 09:47:30 · 228 阅读 · 0 评论