自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣:最长递增子序列(动态规划)

(2):子序列长度大于1时:此时我可以和[0,(i-1) | | (i-2)……] 位置构成子序列,我们可以定义j为前面某个数的下标(0

2024-05-24 17:09:42 298 1

原创 力扣:经典动态规划线性dp—打家劫舍

的话,根据题意,我们的i - 1位置一定是不能选的,那我们i - 1位置不选的最大金额刚好在我们的g[i - 1]里面存着。,因为我们的i - 1位置既可以选也可以不选,具体选不选我们要根据金额大小来判断。g[i]表示:到达第i个位置的时候不选,最大金额。f[i]表示:到达第i个位置的时候选,最大金额。

2024-05-19 16:36:38 360 1

原创 牛客网剑指offer第46题——孩子们的游戏(圆圈中最后剩下的数)

每年六一儿童节,牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。其中,有个游戏是这样的:首先,让 n 个小朋友们围成一个大圈,小朋友们的编号是0~n-1。然后,随机指定一个数 m ,让编号为0的小朋友开始报数。从题目中可以得到,每次需要删除第m-1位置的数,然后从他的下一个位置开始计数,反复循环,就相当于是一个环,那我们可以构造出一个循环链表,一直进行循环操作,碰到符合条件的(m-1位置),就删除该位置节点,等到链表长度为1时,此时就是我们需要的结果,还有一种动态规划的做法,下面附上这两种代码。

2024-05-18 02:01:04 223

原创 力扣:最大数

首先根据提示的数据范围可以看出数据量是非常大的,所以我们要返回一个字符串,那么如何使得我们组成的这个数最大呢,由于题目说明(每个数不可拆分)那我们就需要比较数组里面两个不同位置的数,例如45和2,这两数组合有两种情况,452和245,明显是452大,那我们只需要对字符串进行排序,保证大的数在前面即可,还有个细节问题,我们最后要对排序的字符串进行判断,如果为0,返回0就好了。,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。输出结果可能非常大,所以你需要返回一个字符串而不是整数。

2024-05-17 15:14:14 306

原创 java—网络编程套接字

是客户端Socket,或服务端中接收到客户端建立连接(accept方法)的请求后,返回的服务端Socket。是UDP Socket,用于发送和接收UDP数据报。是UDP Socket发送和接收的数据报。是创建TCP服务端Socket的API。概念:Socket套接字,是。使用传输层TCP协议。使用传输层UDP协议。

2024-05-17 14:34:07 310

原创 牛客AC题:除2!

由于题目说明要使的数组的和最小,并且不能超过k次,那我们要明白数组的和最小,我们每次要取出数组中最大的偶数来进行除2操作,并且除2之后如果这个数还是最大的,我们要一直循环操作;这样不难想到我们学过优先级队列,将偶数放入优先级队列中并按照大根堆进行排序,这样变能保证我们每次操作的偶数都是最大的,附上代码。选择数组中的一个偶数 aia_iai​,将其变成 ai/2a_i/2ai​/2。现在你进行不超过 k k\ k 次操作后,给一个数组,一共有 n n\ n 个数。你能进行最多 k k\ k 次操作。

2024-05-16 18:09:04 371

原创 java-网络原理—TCP/IP

由于确认应答策略,, 对每⼀个发送的数据段, 都要给⼀个ACK确认应答. 收到ACK后再发送下一个数据段. 这样做有⼀个比较大的缺点, 就是性能较差,尤其是数据往返的时间较长的时候;这个时候接收端收到了 1001 之后,再次返回的ACK就是7001了(因为2001 - 7000)接收端其实之前就已经收到了,被放到了。接收端校验不通过,则认为数据有问题,此处的检验和不光包含TCP首部,也包含TCP数据部分。在延迟应答的基础上,我们发现,很多情况下,客户端服务器在应用层也是 "⼀发⼀收" 的,那么这个时候。

2024-05-16 15:41:22 905

原创 牛客试题广场:数组中两个字符串的最小距离

从题目中可以分析出来,要求在两个字符串中的最小距离,我们很简单的办法就是暴力枚举,定义i和j指针,寻找可能的结果,但暴力枚举的时间复杂度为O(n^2),那我们能不能想出用O(n)的复杂度来解决问题呢?给定一个字符串数组strs,再给定两个字符串str1和str2,返回在strs中str1和str2的最小距离,如果str1或str2为null,或不在strs中,返回-1。

2024-05-15 13:55:28 260

原创 牛客NC214:分割等和子集

由于题目数据量范围比较小,所以可以暴力枚举出所有可能情况,具体看代码

2024-05-15 02:00:53 222

原创 牛客AC题:小葱的01串

从题目可以分析出来,需要一段连续区间来进行染色,并且出现了字符数量,所以我们就可以通过滑动窗口 + 哈希表来解决问题,由于题目说明是一个环形字符串,所以要进行特殊处理

2024-05-15 01:42:10 219

原创 多线程锁策略

大部分情况下,虽然当前抢锁失败,但过不了很久,锁就会被释放。给要修改的值, 引入版本号,在 CAS 比较数据当前值和旧值的同时,也要比较版本号是否符合预期。可重入互斥锁,和 synchronized 定位类似,都是用来实现互斥效果,保证线程安全。,B 比 C 先来的. 当 A 释放锁的之后, B 就能先于 C 获取到锁。2. 开始是轻量级锁实现, 如果锁被持有的时间较长, 就转换成重量级锁.1. 开始时是乐观锁, 如果锁冲突频繁, 就转换为悲观锁.,并使用 cpu 硬件提供的 lock 机制保证其原子性。

2024-05-15 01:01:07 1010

原创 java多线程案例

生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取。线程安全问题发生在首次创建实例时,如果在多个线程中同时调用 getInstance 方法, 就可能导致创建出多个实例。​ 阻塞队列的⼀个典型应用场景就是 “生产者消费者模型”. 这是⼀种非常典型的开发模型。​ 阻塞队列是⼀种特殊的队列. 也遵守 “先进先出” 的原则。​ 类加载的时候不创建实例. 第⼀次使用的时候才创建实例。

2024-05-15 00:34:38 559

原创 java_多线程安全问题

java多线程安全问题总结

2024-05-15 00:16:30 873

原创 java_多线程之创建线程的五种方法

java创建线程

2024-05-14 23:58:57 367 1

空空如也

空空如也

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

TA关注的人

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