LeetCode Contest 342

6387. Calculate Delayed Arrival Time 给你一个正整数 arrivalTime 表示列车正点到站的时间(单位:小时),另给你一个正整数 delayedTime 表示列车延误的小时数。 返回列车实际到站的时间。 注意,该问题中的时间采用 24 小时制。 测试样例 输入:arrivalTime = 15, delayedTime = 5 输出:20 解释:列车正点到站时间是 15:00 ,延误 5 小时,所以列车实际到站的时间是 15 + 5…

LeetCode Contest 341

6376. Row With Maximum Ones 给你一个大小为 m x n 的二进制矩阵 mat ,请你找出包含最多 1 的行的下标(从 0 开始)以及这一行中 1 的数目。 如果有多行包含最多的 1 ,只需要选择 行下标最小 的那一行。 返回一个由行下标和该行中 1 的数量组成的数组。 测试样例 输入:mat = ,]…

LeetCode Contest 340

6361. Prime In Diagonal 给你一个下标从 0 开始的二维整数数组 nums 。 返回位于 nums 至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数,返回 0 。 注意: 如果某个整数大于 1 ,且不存在除 1 和自身之外的正整数因子,则认为该整数是一个质数。 如果存在整数 i ,使得 nums = val…

ReentrantReadWriteLock基础介绍

简介 之前我们主要介绍了ReentrantLock和其相关的Condition的内容。今天我们主要会过一下ReentrantReadWriteLock的代码。现实中,读写锁的使用非常多。如果你也是一个大数据工程师,同时使用过Spark的话,就会知道Spark内部有一个BlockInfoManager的类。在大数据计算中,常用的是基于复制的模式,读多写少的任务非常常见,有读写锁可以有效的减少锁竞争,提高数据查询速率。今天这一节,我们就简单介绍一下ReentrantReadWriteLock和它背后的一点数学知识。 读写锁的3条规定: 允许多个线程同时读共享变量 只允许一个线程写共享变量 如果写线程正在执行写出操作,那么禁止其他线程读写共享变量。 ReentrantReadWriteLock的特殊属性:锁降级:遵循先获取写锁,获取读锁,再释放写锁的次序。写锁可以降级成读锁 ReentrantReadWriteLock的实现的接口是ReadWriteLock: public interface ReadWriteLock { /** * Returns the lock used for reading. * * @return the lock used for reading */ Lock…

LeetCode Contest 339

6362. Find the Longest Balanced Substring of a Binary String 给你一个仅由 0 和 1 组成的二进制字符串 s 。 如果子字符串中 所有的 0 都在 1 之前 且其中 0 的数量等于 1 的数量,则认为 s 的这个子字符串是平衡子字符串。请注意,空子字符串也视作平衡子字符串。…

LeetCode Biweekly Contest 101

6327. Form Smallest Number From Two Digit Arrays 给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 ,每个数组中的元素 互不相同 ,请你返回 最小 的数字,两个数组都 至少 包含这个数字的某个数位。 测试样例 输入:nums1 = , nums2 = 输出:15…

LeetCode Contest 338

6354. K Items With the Maximum Sum 袋子中装有一些物品,每个物品上都标记着数字 1 、0 或 -1 。 给你四个非负整数 numOnes 、numZeros 、numNegOnes 和 k 。 袋子最初包含: numOnes 件标记为 1 的物品。 numZeroes 件标记为 0 的物品。 numNegOnes…

Condition的源码分析

这篇我们会继续讲解一个经常和ReentrantLock配套使用的组建:Condition。对于Condition来说,一切的故事开始于: public Condition newCondition() { return sync.newCondition(); } sync对象封装了该方法: final ConditionObject newCondition() { return new ConditionObject(); } ConditionObject就是Condition的实现类,该对象也在AQS的文件中。它有2个成员对象: /** First node of condition queue. */ private transient Node firstWaiter; /**…