算法
Java语言实现的算法
和宝
这个作者很懒,什么都没留下…
展开
-
LRU算法实现
什么是LRU算法?LRU是一种缓存淘汰算法,比方说手机只能开三个应用,你开第四个应用的时候,最先打开的那个就会被关闭,而中途你用过哪个应用,哪个就会被提到最前面,剩下的顺序不变。那么你要接受一个capacity参数作为缓存的最大容量,然后实现两个API,一个是put(key,val),另外一个是get(key),举个具体例子看看LRU如何工作:既然要用到键值对,那么肯定有map结构,而又需要方便地删除队尾元素,访问哪个元素以后还要放在队头,那么使用双向链表比较合适,这个数据结构长这样:首先是双链表的节点原创 2022-06-17 17:08:22 · 238 阅读 · 0 评论 -
leetcode题解-69. x 的平方根
69. x 的平方根 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。**注意:**不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。示例 1:输入:x = 4输出:2示例 2:输入:x = 8输出:2解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。class Solution { public int mySqrt(i..转载 2022-03-15 19:55:01 · 125 阅读 · 0 评论 -
leetcode题解-35. 搜索插入位置
35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4示例 4:输入: nums = [1,原创 2022-03-04 22:42:47 · 87 阅读 · 0 评论 -
leetcode题解-367. 有效的完全平方数
367. 有效的完全平方数给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如 sqrt 。class Solution { public boolean isPerfectSquare(int num) { int l = 0,r = num; while(l <= r){ int mid = (l + r ) >..转载 2022-03-15 20:02:48 · 71 阅读 · 0 评论 -
leetcode题解-704.二分查找
704. 二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你原创 2022-03-04 21:08:13 · 62 阅读 · 0 评论 -
leetcode题解-34. 在排序数组中查找元素的第一个和最后一个位置
34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输..原创 2022-03-07 17:07:20 · 69 阅读 · 0 评论 -
leetcode题解-27. 移除元素
27. 移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。class Solution { public int removeElement(int[] nums, int val) { int bottom = 0; for(int i..转载 2022-03-15 20:31:32 · 82 阅读 · 0 评论