day34 | 贪心part3
1005. K 次取反后最大化的数组和 分成大于0小于0 class Solution { public: // 只用改负数 int largestSumAfterKNegations(vector<int>& nums, int k) { vector<int> a1; // 大于0 vector<int&g…
day32 | 贪心part2
122. 买卖股票的最佳时机 II 能卖就卖 class Solution { public: int maxProfit(vector<int>& prices) { int res = 0; int pre = prices[0]; for (int i = 1; i < prices.size(); i ++) { …
day31 | 贪心part1
455. 分发饼干 思想是让每一块饼干给刚刚符合的人吃 class Solution { public: // g孩子 s饼干 int findContentChildren(vector<int>& g, vector<int>& s) { sort(g.begin(), g.end()); sort(s.…
day30 | 回溯part6
三个 hard, 很夸张 332. 重新安排行程 最后结束的是死胡同点,从死胡同往后回溯。再反转下答案。 class Solution { public: // 多了一个入度的是死胡同 vector<string> res; unordered_map<string, priority_queue<string, vecto…
day29 | 回溯part5
491. 递增子序列 因为数组不能排序,数字是乱序的,所以不能用和前面的比较来去重。使用 unordered_set 去重 class Solution { public: // 不能排序 点和当前数组的最后一个比较 vector<vector<int>> res; vector<int> nums; vecto…
day28 | 回溯part4
93. 复原 IP 地址 分成四份 class Solution { public: // 将字符串分割成4份,每份都是0~255,数字不能含有前导零 vector<string> res; string s; vector<string> restoreIpAddresses(string s) { this->s …
day27 | 回溯part3
39. 组合总和 同一个下标可以被多次选择,dfs 的 for 循环下标从当前开始。 class Solution { public: // 多个 // ==0加入 <0终止 >0继续 // dfs的循环很妙 vector<int> candidates; vector<vector<int>> re…
C++进阶
一、内容提纲 原来写的,图床挂了 二、对象被优化以后才是高效的C++编程 1. 对象使用过程中背后调用了哪些方法 #include <iostream> using namespace std; class Test { public: Test(int a = 10) :ma(a) { cout << "Test…
C++基础
第一章 内存模型和编译链接 1. 掌握进程虚拟地址空间区域划分 编程语言产生:指令+数据 exe 磁盘加载到内存,不可能直接加载到内存。 x86系统:linux系统会给当前进程分配一个 2^32 大小的空间 4G 它不存在,你却看得见,它是虚拟的。 0x00000000 ~ 0xC0000000 用户空间 user space 3G 0xC0000…
Linux 线程
进程与线程 进程:拥有PCB,有独立地址空间。最小的分配资源单位,多个线程共享进程的资源。 线程:拥有PCB,没有独立地址空间。轻量级的进程,本质是进程。是CPU最小的执行和调度单位。 线程的优缺点 可以在一个进程内实现并发。 开销少,创建线程比创建进程要快。 数据通信、数据共享方便,同时也增加了开发的难度。 线程的创建和终止 线程创建、等待线程退…