- 博客(50)
- 收藏
- 关注
原创 DAY41-动态规划-买卖股票
LeetCode123.买卖股票的最佳时机III。LeetCode122.买卖股票的最佳时机II。LeetCode121. 买卖股票的最佳时机。
2024-08-12 12:47:59
98
原创 DAY38-动态规划-完全背包
LeetCode322. 零钱兑换。LeetCode322. 零钱兑换。LeetCode279.完全平方数。LeetCode139.单词拆分。
2024-08-09 15:41:03
96
原创 DAY36-动态规划-01背包plus
LeetCode1049. 最后一块石头的重量 II。LeetCode1049. 最后一块石头的重量 II。LeetCode494. 目标和。LeetCode474.一和零。
2024-08-07 16:17:24
153
原创 DAY34-动态规划-不同路径与整数拆分
LeetCode63. 不同路径 II。LeetCode96.不同的二叉搜索树。LeetCode343.整数拆分。LeetCode62.不同路径。LeetCode62.不同路径。
2024-08-06 11:51:33
165
原创 DAY32-动态规划
LeetCode746. 使用最小花费爬楼梯。LeetCode509. 斐波那契数。LeetCode509. 斐波那契数。LeetCode70. 爬楼梯。
2024-08-04 14:58:24
85
原创 DAY30-贪心(区间算法)
LeetCode452. 用最少数量的箭引爆气球。LeetCode435. 无重叠区间。LeetCode763.划分字母区间。重点:维护一个最右区间长度。
2024-08-01 15:53:10
236
原创 DAY28-贪心
LeetCode1005.K次取反后最大化的数组和。LeetCode122.买卖股票的最佳时机II。LeetCode45.跳跃游戏II。LeetCode55. 跳跃游戏。
2024-07-31 16:50:18
120
原创 Day29-贪心算法
LeetCode134. 加油站LeetCode134. 加油站思路:主要是在遍历的时候计算局部剩余油量总和,如果小于0则说明无法走到需要更新起始点。LeetCode135. 分发糖果思路:主要是利用两次遍历,第一次遍历的时候需要给数组里的每个位置都填上值。第二次反向遍历的时候在根据(该位置的最大值,和后一位+1来判断)
2024-07-31 16:42:30
166
原创 Day25-回溯
LeetCode491.递增子序列。LeetCode491.递增子序列。LeetCode47.全排列 II。LeetCode46.全排列。Leetcode51.N皇后。
2024-07-28 11:28:10
102
原创 Springboot-websocket实现及底层原理
Spring Boot 中的 WebSocket 依赖于 Spring模块,使用了 Reactor Netty 库来实现底层的 WebSocket 通信。
2024-07-27 19:10:59
1259
原创 JUC并行开发03-共享模式与异步模式
如果需要在多个类之间使用GuardedObject对象,作为参数传递不是很方便,因此设计一个用来解耦的中间类,这样不仅能够解耦【结果等待者】和【结果生产者】,还能够同时支持多个任务的管理。每个Java对象都可以关联一个Monitor对象,如果使用synchronized给对象上锁(重量级)之后,该对象头的MarkWord中就被设置指向Monitor对象的指针。图中Futures就好比居民楼一层的信箱(每个信箱有房间编号),左侧的t0,t2,t4就好比等待邮件的居民,右侧的t1,t3,t5就好比邮递员。
2024-07-24 14:07:30
632
原创 JUC并发编程02-常见方法
默认情况下,Java进程需要等待所有线程都运行结束,才会结束。有一种特殊的线程叫做守护线程,只要其他非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束。
2024-07-21 14:55:40
480
原创 JUC并发编程01-基础概念
当上下文切换发生时,需要由操作学习通保持当前线程的状态,并恢复另一个线程的状态,Java中对应的概念就是程序计数器,它的作用时记住下一条jvm指令的执行地址,是线程私有的。top命令 查看进程信息(每隔一段时间重新采集) top -H -p 4262 查看java进程中的线程信息。(微观串行,宏观并行)中,线程作为最小调度单位,进程作为资源分配的最小单位,可以说进程是线程的一个容器。由于一些原因导致cpu不再执行当前的线程,转而执行另一个线程的代码。一个进程内可以有多个线程,一个线程就是一个指令流。
2024-07-20 19:38:12
992
原创 JAVA线程基础-线程池
避免使用Executors创建线程池,主要是避免使用其中的默认实现。它只会用唯一的工作线程来执行任 务,保证所有任务按 照指定顺序(FIFO)执行。比较常见的有4个,用的最多是。
2024-07-13 16:45:18
811
原创 DAY11-栈和队列
LeetCode150. 逆波兰表达式求值。LeetCode347.前 K 个高频元素。LeetCode239. 滑动窗口最大值。LeetCode239. 滑动窗口最大值。
2024-07-13 13:41:38
153
原创 Java基础-多线程并发
AQS全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架, 它是构建锁或者其他同步组件的基础框架。AQS与Synchronized的区别AQS常见的实现类ReentrantLock 阻塞式锁Semaphore 信号量CountDownLatch 倒计时锁工作机制线程0来了以后,去尝试修改state属性,如果发现state属性是0,就修改state状态为1,表示线程0抢锁成功。
2024-07-12 23:39:22
1230
原创 DAY10-栈与队列
LeetCode1047. 删除字符串中的所有相邻重复项。LeetCode225. 用队列实现栈。LeetCode232.用栈实现队列。LeetCode225. 用队列实现栈。LeetCode20. 有效的括号。
2024-07-12 14:09:39
222
原创 DAY7-哈希表
LeetCode383. 赎金信LeetCode454.四数相加IILeetCode383. 赎金信LeetCode15. 三数之和方法一(暴力法):但当数据量非常大的时候会超时。方法二(双指针法):固定i,再遍历j,k(),当遇到重复数字可跳过(
2024-07-09 15:22:47
210
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人