- 博客(4)
- 收藏
- 关注
原创 [Leetcode] 力扣1046:最后一块石头的重量
思路每一步都会从石头中取出最大的两个石头,涉及最大n和最小n优先想到的就是堆数据结构(优先级队列结构)。方法将石头数组建大根堆,每次操作取两次堆顶进行比较,相同全部摧毁,不同则将插值插入堆中。代码class Solution {public: int lastStoneWeight(vector<int>& stones) { priority_queue<int> q; for (int s: stones) q.pus.
2020-12-30 10:53:42 109
原创 [C/C++] C++产生随机数方法
使用srand()设置随机数种子,一般可以使用srand((int)time(0))的方法,使用系统时钟产生不同的随机数种子。使用rand()获取随机数,通过取余操作将随机数限制在某个范围内#include <stdlib.h>#inlcude <time.h>//获取[a, b]区间随机整数int getRandom(int min, int max) { srand((int)time()); return rand()%(b-a+1) + a;}...
2020-12-24 10:43:32 148
原创 信号量实现生产者消费者问题
生产者/消费者问题是一个多进程进行同步的问题,需要使用信号量(semaphore)进行相关资源的控制,实现并发。一些关于并发的基础概念如下:原子操作 一组不可分割的函数或操作。这类函数或操作的执行是不可以被中断的。临界区 进程中一段需要访问共享资源的代码,共享资源一次只能允许一个进程访问,系统要保证进入临界区的进程不超过一个。 正常执行可以并行,临界区代码执行只能串行。解决并发问题的核心:控制对共享资源的访问信号量(semaphore)用于在进程间发送信号的整形变量,该变量定义3个原子操.
2020-12-22 17:46:14 4292
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人