摘要:
题目 在规定 M * N 大小的地图,放置 n 个矩形,是否能够放下,若能,请给出排布结果。 输入:M, N, n, n 个矩形的长宽。 分析 n个矩形必须要一个一个放入地图,当放不下时回退 DFS 为什么某些放置策略会失败? 矩形的横纵不对,矩形的位置不对,矩形的放置顺序不对 放置策略 放置顺序: 阅读全文
摘要:
前言 面试的时候遇到了,是从来没想过会出问题的手撕。竟然在面试环节下出了不少纰漏。 要点 构造函数:默认构造、拷贝构造、赋值运算符重载、移动构造函数、析构函数 push_back/pop_back 代码 #include <iostream> using namespace std; #define 阅读全文
摘要:
要点 线程池,功能是管理线程资源,管理任务队列。空闲线程从任务队列中取出任务完成,需要线程时将任务挂在任务对列。 由于对任务队列的操作要实现同步,引入了互斥信号量和条件变量。 当线程池生命周期结束时,不允许再挂载任务,引入一个原子变量stop_flag 实现线程池ThreadPool类,成员变量有: 阅读全文
摘要:
要点 维护一个资源(在生产者-消费者中即流水线的位置)池,实现put()/get()两个函数。由于对信号量的操作是互斥的,要引入条件变量和信号量。 实现资源池类Pool,成员变量: mtx : mutex cv : condition_variable que : queue capacity : 阅读全文
摘要:
要点 成员是指向实例的指针和应用计数 应用计数也应该是一个共享的int指针,因为这个计数需要各个共享指针同步维护 需要重载的函数有:用指针构造;拷贝构造;赋值运算符=;解地址运算符*;指针调用成员的运算符->;析构函数; 涉及到计数的部分: 构造时初始化:1 拷贝构造:+1 赋值=:原有-1,新对象 阅读全文
摘要:
题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字 阅读全文
摘要:
题目描述 给你二叉树的根节点 root ,返回它节点值的 前序 / 中序 / 后序 遍历。 递归写法 LeetCode_0144. 前序 中左右 void myPreorder(TreeNode* root, vector<int>& ans) { if(!root) { return; } ans 阅读全文
摘要:
LeetCode_0044. 通配符匹配 给你一个输入字符串 (s) 和一个字符模式 (p) ,请你实现一个支持 '?' 和 '*' 匹配规则的通配符匹配: 1. '?' 可以匹配任何单个字符。 2. '*' 可以匹配任意字符序列(包括空字符序列)。 3. 判定匹配成功的充要条件是:字符模式必须能够 阅读全文
摘要:
题目描述 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 示例 1: 输入:s = "1 + 1" 输出:2 示例 2: 输入:s = " 2-1 + 2 " 输出:3 示例 3: 输入:s = 阅读全文
摘要:
题目描述 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack = "sadbutsad" 阅读全文