- 博客(17)
- 收藏
- 关注
原创 栈与队列习题2
思路:如果是数字就入栈,遇到字符就出栈计算,减法和除法考虑出栈数字运算顺序,计算完入栈。的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。再继续遍历,当前窗口向前移动遇见的元素入队,移除窗口的元素出队。出队方法:如果准备移除窗口的元素和队头元素相同,就出队。返回一个表示表达式值的整数。入队列保持单调递减顺序,比入队数字小的就出队。滑动窗口每次只向右移动一位。主函数先把k个数字入队,保留最大值。队头一直保持最大元素。
2025-12-21 21:17:03
210
原创 栈与队列每日习题1
思路:一个队列实现栈,进队列的时候,把当前数字之前的数字重新入队列,这样队头就是最后进的数字,出队列就模拟了后进先出的效果。思路:两个栈实现队列,入的时候直接入栈1,出的时候如果栈2有就直接出,如果没有就把栈1的都入到栈2,栈2保持了队列的顺序。思路:如果栈不为空并且栈顶相等和当前元素,就出栈,否则就入栈,栈里剩的再倒序加上才是原来的顺序。思路:三种情况,两两匹配就栈顶出栈,左右括号就入栈,最后如果栈空了就匹配完了。1047. 删除字符串中的所有相邻重复项。225. 用队列实现栈。232.用栈实现队列。
2025-12-09 22:28:09
191
原创 代码随想录哈希表二
示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]答案中不可以包含重复的三元组。
2025-11-30 18:09:58
407
原创 代码随想录哈希表一
思路:循环计算平方和,用集合存储,然后判断,如果循环出现的值在之前计算过,就不是快乐数,如果出现了1就是快乐数。对于任意一个遍历的数字,看target-当前值是否出现过,如果出现过就返回索引,否则当前值为和索引进入map。思路:长度26的数组记录每个字符的出现次数,然后用新的字符串对比次数减掉。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。思路:集合插入一个数组,另一个数组看在不在这个集合里。整数,并返回它们的数组下标。,编写一个函数来判断。,请你在该数组中找出。
2025-11-30 16:53:53
224
原创 代码随想录删除链表的倒数第N个节点和链表相交和142.环形链表II
输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2], n = 1 输出:[1]输入:head = [1], n = 1 输出:[]进阶:你能尝试使用一趟扫描实现吗?
2025-11-23 23:42:07
179
原创 代码随想录设计链表和两两交换链表中的节点
注意边界条件,index在index=size位置可以插入,等同于尾部插入,以指示链表中的上一个节点。假设链表中的所有节点下标从。你可以选择使用单链表或者双链表,设计并实现自己的链表。在index>=size位置不可以获取数据和删除。是指向下一个节点的指针/引用。如果是双向链表,则还需要属性。每次遍历都从虚拟头节点出发,初始化:设置长度,虚拟节点。
2025-11-23 17:25:47
214
原创 代码随想录移除链表元素,反转链表
虚拟头节点,cur指向虚拟头节点,定义为已处理完的链表的尾部,判断下一个节点如果需要删除就更换next,,请你删除链表中所有满足。给你一个链表的头节点。如果存在下一个节点,否则cur向后移动。
2025-11-20 21:48:43
138
原创 《代码随想录》数组:螺旋矩阵2
每圈遍历分为四次行或列遍历,每行或列的遍历被x/y,n-offset控制,统一按照左闭右开原则处理。思路:设置变量考虑转几圈,如果圈数为奇数,最后还需要给中心位置单独赋值。设置每一次遍历的终止位置,利用offset控制。所有元素,且元素按顺时针顺序螺旋排列的。设置count值增长作为数字,从1开始。设置二维数组的开始遍历位置x,y。
2025-11-20 13:10:28
193
原创 《代码随想录》数组:长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。每次r向前走,sum加上r位置的值,当sum大于target,修改res,sum剪掉l位置的值,缩短l。窗口的长度为r-l+1代表>=s的最小连续子数组长度,范围是[l,r]- 输入:s = 7, nums = [2,3,1,2,4,3]- 解释:子数组 [4,3] 是该条件下的长度最小的子数组。l代表窗口的左端,初始化为0。r代表窗口的右端,初始化为0。sum求和初始化为0。
2025-11-18 10:07:10
235
原创 《代码随想录》数组:有序数组的平方
给你一个按 **非递减顺序** 排序的整数数组 `nums`,返回 **每个数字的平方** 组成的新数组,要求也按 **非递减顺序** 排序。首位指针和尾巴指针平方对比,大的放到len位置,然后len--,如果首位平方更大,l++,否则r--解释:平方后,数组变为 [16,1,0,9,100]11的平方更大,放到len位置,len-1,r--输入:nums = [-4,-1,0,3,10]输入:nums = [-7,-3,2,3,11]排序后,数组变为 [0,1,9,16,100]```**示例 2:**
2025-11-18 10:06:34
119
原创 《代码随想录》数组:移除元素
如果快指针找到3就一直跳过,找到不为3的就把值放到slow指针的位置,然后slow++,fast++,slow一直指向结果数组的下一个位置,返回slow的值就返回了结果数组的长度,这里要注意fast的值要一直向前走。- 更改 `nums` 数组,使 `nums` 的前 `k` 个元素包含不等于 `val` 的元素。以1,3,3,2为例,fast处理1,把slow的位置改为1,然后slow++,fast++,例子:1,3,3,2,最终变为1,2,3,3,要取消的为3。最终数组为1,2,3,2。
2025-11-17 10:27:01
196
原创 《代码随想录》数组:二分查找
/ 在[l,r)上寻找一个数字=target,mid = l+r,如果nums[mid] > target, target 在l,mid上, r = mid-1。// 在l,r上寻找一个数字=target,mid = l+r,如果nums[mid] > target, target 在l,mid上, r = mid-1。// 如果nums[mid] < target, target 在mid, r上, l = mid+1。// 如果相等返回mid。// 如果相等返回mid。
2025-11-17 10:26:10
332
原创 java并发编程
Clh队列是fifo双向队列,当前线程如果获取同步状态失败,aqs会将当前线程以及等待状态等信息构造成一个节点加入clh队列,同时阻塞当前线程,当同步状态释放时,把首节点唤醒(公平锁),使其可以再次获取同步状态。偏向锁:偏向第一个获取到它的线程,如果说第一个线程获取到之后,接下来没有其他线程竞争获取,这个线程之后每次直接进入同步块,避免获取释放锁,避免了频繁获取释放锁,思路:把线程封装为node对象,把Node放到一个同步队列,这些同步队列是先进先出的双向队列,基于clh队列,使用state表示同步。
2025-04-10 14:31:38
838
原创 redis
1)主从模式:一个master可以拥有多个slave,某个slave挂了不影响其他,重新启动后,数据会从Master同步过来,在主从模式下,只有一个主节点可以写,而主从节点都可以读,所以主节点负责写,从节点负责读,主节点挂了redis不再提供写服务。数据和slot哈希槽绑定而非节点。zk锁可靠性高,不依靠超时时间释放,缺点是,中间长作业严重阻塞,性能比不上redis,频繁创建删除节点,但redis异步复制,故障转移可能丢数据,如用redlock,还需调整故障转移策略。
2025-04-07 18:49:13
607
原创 java多线程
当一个线程执行到读取文件网络数据,如果数据没有准备好,线程就会被操作系统挂起进入阻塞状态,io完成后,线程改为就绪状态,放入就绪队列等待cpu调度,调度到cpu执行后才会占用cpu时间片,称为异步非阻塞io。linked队列,初始化没有指定容量默认使用Int最大值作为队列容量,至少有一个节点,头节点不含有元素,一个单向链表,两把锁,一把出队一把入队,性能比array队列高,容量无限。缓存线程池选syn队列:队列不存储任务,任务里继续按照线程,没有线程就创建新线程,处理完后线程超时销毁,契合缓存线程池。
2025-04-05 16:24:09
657
原创 java基础
加快哈希计算减少哈希冲突为了找到key在哪个Bucket,计算hash(key) % length%比&慢,为了保证&的计算结果等于%的结果替换为hash(key) & (l-1)更快l-1如果是奇数,二进制低位全是1,&运算之后可能为1或0所以更均匀,如果是偶数就只有0。
2025-04-04 11:31:46
463
原创 计算机网络题
3、发送 HTTP 请求,浏览器构建一个 HTTP 请求消息,包括请求方法(如 GET、POST 等)、请求头(包含各种关于客户端的信息,如浏览器类型、接受的内容类型等)和请求体。http2:二进制分帧,比1的文本传输准确,流控制(和tcp流量控制类似,有一个窗口大小),流标识符给每个请求唯一标识,然后便于并发处理。2、tcp链接,数据包发送,丢失重发,(原理,如果超时之后发送方没收到ack就重发,用指数退避调整超时时间)五层:物理,数据链路层,网络,传输,应用。
2025-02-21 10:47:55
507
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅