实现LRU缓存

z 发布于 2023-08-17 17:47
什么是LRU缓存? LRU缓存(Least Recently Used)是一种常用的缓存淘汰算法,它根据数据的使用时间来决定哪些数据需要被移除。这种算法假设最近使用的数据会在未来一段时间内继续被使用,而很久没有使用的数据则可能在未来很长时间内不会被使用。 实现 LRU淘汰机制的基本原理是,当缓存已满,需要插入新的数据时,它会选择最近最少使用的数据进行移除,从...
标签: 学习 算法

【算法】关于背包问题

z 发布于 2023-05-30 17:36
背包问题 对于背包问题,我们需要使用动态规划的思想来解决问题。 例如一个问题, 选择n个物品重量w不超过n的最大价值v 首先是集合表示,可以表示为前 i 个物品 不超过 j 的重量的集合 集合的属性:最大/最小值 状态的计算: 对于[i,j] 我们需要对此进行一个集合的划分 一般来说,取最后一部进行划分: 以01 背包为栗:每个物品 选择和不选 , 划分为...
标签: 算法 java

相差为k的数对数量

z 发布于 2023-04-19 20:57
给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i < j 且 |nums[i] - nums[j]| == k 。 |x| 的值定义为: 如果 x >= 0 ,那么值为 x 。 如果 x < 0 ,那么值为 -x 。 1 <= nums.length,k <= 100000,数组中每...
标签: 算法

【算法】合并相似的物品leetcode2363

z 发布于 2023-02-28 20:02
题目 给你两个二维整数数组 items1 和 items2 ,表示两个物品集合。每个数组 items 有以下特质: items[i] = [valuei, weighti] 其中 valuei 表示第 i 件物品的 价值 ,weighti 表示第 i 件物品的 重量 。 items 中每件物品的价值都是 唯一的 。 请你返回一个二维数组 ret,其中 ret...
标签: 算法 java

【算法】得分最高的单词集合leetcode1255

z 发布于 2023-02-27 01:04
题目 你将会得到一份单词表 words,一个字母表 letters (可能会有重复字母),以及每个字母对应的得分情况表 score。 请你帮忙计算玩家在单词拼写游戏中所能获得的「最高得分」:能够由 letters 里的字母拼写出的 任意 属于 words 单词子集中,分数最高的单词集合的得分。 单词拼写游戏的规则概述如下: 玩家需要用字母表 letter...

【算法】笨拙的手指acwing2058

z 发布于 2023-02-23 22:08
奶牛贝茜正在学习如何在不同进制之间转换数字。 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔。 每当贝茜将数字转换为一个新的进制并写下结果时,她总是将其中的某一位数字写错。 例如,如果她将数字 14 转换为二进制数,那么正确的结果应为 1110,但她可能会写下 0110 或 1111。 贝茜不会额外添加或删除数字,但是可能会由于写错数字的原因,写下包含前...

【算法】二分模板

z 发布于 2023-01-21 11:28
二分模板 将区间[l, r]被分为[l, mid]和[mid+1, r]时使用 int l=0,r=n-1; while(l<r){ int mid=l+r>>1; if(nums[mid]>=x){ r=mid; }else{ l=mid+1; } } 2.将区间[l, r]被分为[l, mid-1]和[m...

【算法】八数码

z 发布于 2023-01-11 12:53
在一个 3×3 的网格中,1∼8这 8 个数字和一个 x 恰好不重不漏地分布在这 3×3 的网格中。 例如: 1 2 3 x 4 6 7 5 8 在游戏过程中,可以把 x 与其上、下、左、右四个方向之一的数字交换(如果存在)。 我们的目的是通过交换,使得网格变为如下排列(称为正确排列): 1 2 3 4 5 6 7 8 x 例如,示例中图形就可以通过让 x ...

Leetcode.338 比特位计数

z 发布于 2021-11-15 09:14
题目详情 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。 示例 1: 输入:n = 2 输出:[0,1,1] 解释: 0 --> 0 1 -...