自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 子数组最大平均数问题

我们选择去建立两个索引,即left和right,保持(left,right)之间一共有三个元素,然后我们选择一边遍历,一边去寻找,每当改变一次就去标记一下当前区间的最大值就好了。输入:nums = [1,12,-5,-6,50,3], k = 4 输出:12.75 解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75。函数接受两个参数,一个是整数数组nums,另一个是整数k。然后,代码会遍历数组,每次将右边界右移一个位置,左边界左移一个位置,重新计算窗口内元素的和,并更新最大值。

2023-10-11 14:13:54 71

原创 JVM的GC算法

在垃圾收集(Garbage Collection)的过程中,标记遗漏(Marking Omission)是指垃圾收集器在标记阶段中漏掉了某些对象,导致这些对象没有被正确地标记为存活对象,进而被错误地回收。计数处理和mutator是并发执行的,但是在计数过程中操作的对象可能会被转移的记忆集合线程使用,因此需要先停掉记忆集合线程。转移专用记忆集合维护线程是和mutator并发执行的线程,它的作用是基于转移专用记忆集合日志的集合,来维护转移专用记忆集合。带标记的是存活对象,不带标记的是死亡对象。

2023-10-10 21:30:37 65 1

原创 Thread线程副本

在探测式清理中,垃圾回收器会维护一个根集合,根集合包含了一组根对象,这些对象是程序中可以直接访问到的对象,如全局变量、静态变量等。探测式清理的基本思想是通过从根对象开始,递归地遍历对象图,将可达的对象标记为活动对象,而未被标记的对象则被认为是垃圾对象。首先,由于启发式规则是基于经验和统计信息,可能会存在误判的情况,即将仍然活跃的对象误判为垃圾对象,导致错误的回收。使用Callable接口可以实现更加灵活的多线程编程,可以获取任务的执行结果,可以捕获任务执行过程中的异常,还可以取消任务的执行。

2023-10-10 21:29:37 31 1

原创 位运算的妙用

输入:n = 00000000000000000000000010000000 输出:1 解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 ‘1’。1)根据题目要求进行计算 遍历这个32位二进制数的每一位,判断每一位是否为1,可以让原数字和32位二进制的1进行与运算判断最后一位是否为1。此时很显然能判断出第二位是0,而后续的将数据右移就可以判断出是不是1了 故而是不是1我们就用(n>>i)&1即可。让1不断左移或者让原数据不断右移。

2023-09-05 20:06:31 29 1

原创 理解位运算的规则

最后对之前的结果执行”位或“操作,v为1这num的i位更新为1。首先,将数字1左移i位,得到一个只有第i位为1的数。最后,检查结果是否为0,如果不为0,则说明第i位为1,否则第i位为0。2.设置(将某一位设置为1) setBit先将1左移i位,得到形如00010000的值,接着堆这个值和num执行”位或“操作,这样只会改变i位的数据。例如,如果num的二进制表示是101101,那么getBit(num, 3)的返回值就是true,因为第3位是1。参数num是要获取位的数字,参数i是要获取的位的索引。

2023-09-05 19:43:13 180 1

原创 数组中第K大的数字 (1)

快速选择算法是快速排序的变种,它选择一个基准元素,将数组分为两个部分,左边的部分都小于基准元素,右边的部分都大于基准元素。然后根据基准元素的位置,判断第 k 个最大的元素在哪个部分,继续在相应的部分中进行递归查找。在主函数中调用 findKthLargest 方法,传入数组 nums 和整数 k,即可得到数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。输入: [3,2,3,1,2,4,5,5,6], k = 4 输出: 4。

2023-08-31 15:00:00 107 1

原创 二分查找和搜索树的高频问题

其实还可以更简单一些,因为是从左开始找的,开始的时候必然是arr[i-1]arr[i+1]的位置即可。查找考虑的是数据的前半部分 中间元素 和 后半部分的数据,方便快捷的使用查找。当我们遍历到下标i时,如果有arr[i-1]arr[i+1],那么i就是我们需要找出的下标。输入:arr = [0,2,1,0] 输出:1。输入:arr = [0,1,0] 输出:1。时间复杂度为O(n),其中n为数组的长度。来自LEETCODE。

2023-08-24 10:36:30 20 1

原创 数组创建 与增删改查

【代码】数组创建 与增删改查。

2023-07-27 21:34:57 23 1

原创 算法通关村白银

链接:https://leetcode.cn/problems/reverse-linked-list-ii/solutions/634701/fan-zhuan-lian-biao-ii-by-leetcode-solut-teyq/第 2 步:把 pre 的 next 指针指向反转以后的链表头节点,把反转以后的链表的尾节点的 next 指针指向 succ。// 第 1 步:从虚拟头节点走 left - 1 步,来到 left 节点的前一个节点。// 第 4 步:同第 206 题,反转链表的子区间。

2023-07-23 20:58:19 41

原创 算法通关村青铜挑战

新设一个链表 设置一个虚拟头节点再将链表倒叙头插即可。,请你反转链表,并返回反转后的链表。

2023-07-23 20:54:00 25

原创 找到链表中第一个公告子节点问题

相信很多人跟我一样拿到题目之后有一点点思路但是又实现不了,这个时候我们考虑将常用的数据结构和算法思想都过一遍,再想想哪些能解决这个问题。两个链表的头节点已知,相交之后成为一个单链表,相交的位置和相交前的节点个数未知,要求设计一个算法完成。

2023-07-19 09:59:49 227

原创 小白也能学会的链表(青铜)

此文章采用Java语言来完成本次挑战,挑战的内容是双向链表是:1) 如何构造的,以及如何实现元素的插入和删除。废话不多说,直接开始正文部分。

2023-07-17 17:49:21 581 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除