
LC SQL、多线程及其他
Leetcode与Lintcode SQL、多线程及其他
记录算法题解
数学、算法爱好者,喜爱钻研各种数学和算法题。欢迎交流!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Leetcode】1279. Traffic Light Controlled Intersection
要求设计一个信号灯的类,同一个信号灯的实例会传给多个线程,每个线程都会尝试让一辆车通行。要求将这个类设计成不会死锁的类,并且使得只有绿灯方向上的车在走,同时不允许车流有交叉(题目保证车不会拐弯)。开一个条件变量,只有在当前路为绿灯或者另一条路没有车的时候才被唤醒,接下来如果当前路不是绿灯,则变为绿灯,接着让车通过,并清空当前路的车,接着唤醒别的线程。有一个十字交叉路口,南北通行的路id为。,东西通行的路id为。原创 2022-12-31 14:29:55 · 427 阅读 · 0 评论 -
【Lintcode】2442. Print ABC interleavly
思路是mutex + condition_variable,同时用三个变量记录当前要让哪个线程开始打印。其某一个实例会传给三个线程,三个线程各自调用printA,printB和printC。要求利用多线程技术打印。原创 2022-12-29 05:37:19 · 131 阅读 · 0 评论 -
【Lintcode】2497. Deposit and Withdraw Money
可以用个锁不让取钱和存钱同时进行。同时,如果取钱的时候钱不够,则阻塞住线程。当存钱的时候,notify一下使得取钱线程继续取。要求设计一个银行账户类,可以线程安全地处理取钱和存钱请求。原创 2022-12-29 05:29:37 · 154 阅读 · 0 评论 -
【Leetcode】1188. Design Bounded Blocking Queue
用两个条件变量,和一把锁,两个条件变量一个负责阻塞和唤醒入队线程,另一个负责阻塞和唤醒出队线程。我们不希望入队和出队同时进行,所以需要用同一把锁。当入队的时候,首先上锁(不让出队线程进行),然后等待队列不满,如果不满则入队,并且唤醒出队线程(如果当前有出队线程wait的话,其就会被唤醒做出队操作);当出队的时候,类似的,首先上锁,然后等待队列不空,如果不空则出队,并唤醒入队线程(如果当前有入队线程wait的话)。如果出队的时候队列为空,则阻塞住该线程;如果入队的时候队列的大小已经达到了。原创 2022-12-28 08:31:48 · 394 阅读 · 0 评论 -
【Leetcode】1226. The Dining Philosophers
每个哲学家只有在其两边的哲学家都不在吃饭的时候,他才能吃饭。同时,我们也不希望同一个哲学家有多于一个线程在操控(我们对每个哲学家都开一个mutex)。我们可以开一个condition_variable,当当前哲学家不能吃饭的时候就wait,如果能吃,则标记其正在吃饭,同时将两边的哲学家都锁上,吃完了之后再将两边哲学家解锁。每个哲学家只有在两边的叉子都没正在使用的情况下才能吃饭,并且吃饭的时候会使用左右两边的两个叉子。每个哲学家不是在吃饭就是在思考。要求设计一个并发算法,使得没有哲学家在永远挨饿。原创 2022-12-27 23:29:10 · 256 阅读 · 0 评论 -
【Lintcode】2433. 3 threads interleavly print decreasing numbers n - 1
要求用三个线程交替打印序列。原创 2022-12-27 09:14:11 · 120 阅读 · 0 评论 -
【Lintcode】2428. Start 2 threads to print interleavly 1-n
这个序列,其中一个线程只能打印奇数,另一个只能打印偶数。,要求用两个线程打印出。原创 2022-12-27 05:56:21 · 126 阅读 · 0 评论 -
【Lintcode】2436. Two threads interleavly print numbers and letters
【代码】【Lintcode】2436. Two threads interleavly print numbers and letters。原创 2022-12-27 05:47:59 · 123 阅读 · 0 评论 -
【Lintcode】2453. Use N threads to calculate the sum of the array
的区间和,每个线程计算的区间长度要尽可能平均。原创 2022-12-27 05:27:38 · 123 阅读 · 0 评论 -
【Lintcode】2502. Design Thread Safe Array List
在append和get的时候加锁即可。注意,在读的时候也要加锁,因为在append的时候可能发生扩容,如果在delete旧数组之后读的话可能读到脏数据。有一个给定的AbstractArrayList类,要求实现线程安全版本的ArrayList。原创 2022-12-27 05:04:31 · 146 阅读 · 0 评论 -
【Lintcode】2503. Implement a thread-safe counter
可以用lock_guard来做,将增和减的部分上锁。要求实现一个线程安全的计数器。原创 2022-12-27 04:54:18 · 120 阅读 · 0 评论 -
【Lintcode】2504. Log recording with multithreading
【代码】【Lintcode】2504. Log recording with multithreading。原创 2022-12-27 04:43:35 · 125 阅读 · 0 评论 -
【Leetcode】1242. Web Crawler Multithreaded
的主机名称相同的网站爬下来。这个接口调用getUtrls的时候会阻塞。,实现一个多线程的网络爬虫,从。原创 2022-12-26 08:20:53 · 562 阅读 · 0 评论 -
【Leetcode】1195. Fizz Buzz Multithreaded
将这个类的一个实例传给四个线程,四个线程分别调用这四个函数。接受一个int,并打印之。要求完成上面的类的书写。原创 2022-12-26 07:33:25 · 251 阅读 · 0 评论 -
【Leetcode】1117. Building H2O
有两个线程,一个线程可以产生一个H原子,另一个可以产生一个O原子。要求写出一个同步代码,使得每三个原子都是恰好一个水分子的构成,即。原创 2022-12-25 02:05:31 · 212 阅读 · 0 评论 -
【Leetcode】1116. Print Zero Even Odd
的线程运行,然后让它唤醒所有线程,其余线程通过一个condition_variable的判断来决定其是否应该被唤醒。同一个这个类的实例会传给三个线程,三个线程分别调用三个函数,要求打印出。要开一个锁让三个线程只能有一个运行,用一个bool变量表示是否应该打印。,用另一个int变量表示当前应该打印什么数,一开始让打印。三个函数只能打印符合条件的数字。原创 2022-12-24 18:02:07 · 225 阅读 · 0 评论 -
【Leetcode】1114. Print in Order
法1:mutex + condition_variable。可以使用mutex使得三个线程只有一个线程在执行,并且开一个变量指示每个线程什么时候能执行。满足条件的时候即让线程执行,否则让线程等待条件满足。可以用一个int变量来记录条件,初始为。要求修改Foo的实现使得三个线程起来以后,输出恰好是。这个类的一个实例会传递给三个线程,三个线程分别会调用。的线程不需要什么条件,打印完毕之后将条件变量加。才能进行,以此类推。的线程需要条件变量变为。原创 2022-12-22 13:29:37 · 160 阅读 · 0 评论 -
【Leetcode】1115. Print FooBar Alternately
题目地址:https://leetcode.com/problems/print-foobar-alternately/public class FooBar { private int n; private boolean runFoo; public FooBar(int n) { this.n = n; runFoo = true; } public void foo(Runnable print原创 2022-01-02 10:51:07 · 286 阅读 · 0 评论 -
【Lintcode】204. Singleton
题目地址:https://www.lintcode.com/problem/204要求实现单例模式。可以使用饿汉模式,直接new出来,从而没有线程安全问题。代码如下:class Solution { private static final Solution instance = new Solution(); private Solution() { } /** * @return: The same instance of原创 2021-02-09 03:59:14 · 203 阅读 · 0 评论 -
【Leetcode】181. Employees Earning More Than Their Managers
题目地址:https://leetcode.com/problems/employees-earning-more-than-their-managers/给定一个Employee表,例如:+----+-------+--------+-----------+| Id | Name | Salary | ManagerId |+----+-------+--------+-----------+| 1 | Joe | 70000 | 3 || 2 | Henry |原创 2020-10-08 08:01:50 · 206 阅读 · 0 评论 -
【Leetcode】184. Department Highest Salary
题目地址:https://leetcode.com/problems/department-highest-salary/给定两个表,分别是Employee表和Department表,例子如下:+----+-------+--------+--------------+| Id | Name | Salary | DepartmentId |+----+-------+--------+--------------+| 1 | Joe | 70000 | 1 |原创 2020-10-08 00:29:30 · 244 阅读 · 0 评论 -
【Leetcode】178. Rank Scores
题目地址:https://leetcode.com/problems/rank-scores/给定一个Scores表,例如:+----+-------+| Id | Score |+----+-------+| 1 | 3.50 || 2 | 3.65 || 3 | 4.00 || 4 | 3.85 || 5 | 4.00 || 6 | 3.65 |+----+-------+要求返回每个Score的排名。每个Score都必须显示,如果有相同Score的,原创 2020-10-07 00:29:45 · 504 阅读 · 1 评论 -
【Leetcode】175. Combine Two Tables
题目地址:https://leetcode.com/problems/combine-two-tables/给定两个表,分别是Person表和Address表:+-------------+---------+| Column Name | Type |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+--原创 2020-10-07 00:17:03 · 191 阅读 · 0 评论 -
【Leetcode】176. Second Highest Salary
题目地址:https://leetcode.com/problems/second-highest-salary/给定一个Employee表如下:+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+要求返回第二高的Salary,例如,要返回:+---------------------+| SecondHighestSalar原创 2020-09-25 01:32:26 · 270 阅读 · 0 评论