
c++
文章平均质量分 88
Crystal_Coding
这个作者很懒,什么都没留下…
展开
-
muduo第二章死锁问题
死锁问题原创 2022-08-26 14:25:39 · 375 阅读 · 1 评论 -
leetcode445. 两数相加 II
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -&...原创 2020-04-14 15:38:19 · 123 阅读 · 0 评论 -
C++11新特性
auto关键字根据表达式的值的类型来推断变量的类型auto在一条语句中可以声明多个变量,但是变量的类型必须是一致的,就好像double后面可以声明、定义多个double类型的变量,其后的变量都是double类型当引用作为auto对象的初值时,auto会忽略掉引用,而直接推断出引用对象的类型auto会忽略掉顶层const,而保留底层const如果需要推断出顶层const,需要明确指出将...原创 2020-04-14 10:40:31 · 290 阅读 · 2 评论 -
leetcode355. 设计推特
设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近十条推文。你的设计需要支持以下的几个功能:postTweet(userId, tweetId): 创建一条新的推文getNewsFeed(userId): 检索最近的十条推文。每个推文都必须是由此用户关注的人或者是用户自己发出的。推文必须按照时间顺序由最近的开始排序。fo...原创 2020-04-13 19:20:49 · 259 阅读 · 0 评论 -
c++函数指针
文章目录函数指针用类型别名来定义函数指针函数的返回类型:指向函数的指针函数指针指向函数的指针,指针指向的是函数而不是对象,所指向的函数的类型由函数的返回类型和参数列表共同确定,与函数名无关。定义: 用指针替换函数名即可bool lengthCompare(const string &str1, const string &str2);//定义指向参数列表的类型为两个常量字...原创 2020-04-13 11:28:02 · 113 阅读 · 0 评论 -
c++ 类型别名 typedef using
文章目录类型别名typedef关键字 定义类型别名别名声明(using) 定义类型别名特别注意类型别名某种类型的同义词,使用类型别名可以使复杂的类型名变得简单易使用。说明:一般情况下,理解类型别名所定义的对象的类型时,可以将类型别名直接替换成它原有的类型,但是在定义指针的类型别名时,特别是用该类型别名定义常量时,不能按照替换为原有类型的方式来理解对象的类型定义类型别名的方法:关键字:...原创 2020-04-13 10:39:57 · 345 阅读 · 0 评论 -
leetcode面试题 16.03. 交点
文章目录题目基本思想完整代码题目给定两条线段(表示为起点start = {X1, Y1}和终点end = {X2, Y2}),如果它们有交点,请计算其交点,没有交点则返回空值。要求浮点型误差不超过10^-6。若有多个交点(线段重叠)则返回 X 值最小的点,X 坐标相同则返回 Y 值最小的点。示例 1:输入:line1 = {0, 0}, {1, 0}line2 = {1, 1}, {...原创 2020-04-12 19:06:16 · 342 阅读 · 0 评论 -
C++中常用的设计模式
写在前面工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式工厂模式简单工厂模式用一个工厂类来根据输入的条件实例化不同的类,然后根据类中相应的虚函数得到不同的结果。(工厂来生产产品,产品的生产过程全部保存在工厂中,想生产产品时,只需调用工厂类以及了解生产产品的材料(基类)就行)优点:新添加类时,不会影响之前创建的类,需要修改下工厂类缺点:客户端必须要知道基类和工厂类,耦合性差...原创 2020-04-12 16:01:13 · 2295 阅读 · 0 评论 -
C++右值引用
写在前面对象的移动和拷贝对于那些对象拷贝到另一个对象中后,就销毁的对象,采用移动的方式,会大幅度提升程序的性能。标准库容器、string、shared_ptr既支持 移动 也支持 拷贝,IO类、unique_ptr仅支持移动,不支持拷贝右值引用就是为了支持移动操作而产生的右值引用右值引用:必须绑定到右值的引用,将常规的引用称为左值引用左值引用:不能绑定到要求转换的表达式、字...原创 2020-04-08 14:34:21 · 183 阅读 · 0 评论 -
leetcode面试题 01.07. 旋转矩阵
给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 2:给定 matrix =[...原创 2020-04-07 15:34:45 · 262 阅读 · 0 评论 -
常用排序算法C++实现
写在前面选择类排序:直接选择、堆排插入类排序:直接插入、希尔排序交换类排序:冒泡、快排归并排序#include <bits/stdc++.h>using namespace std;void swap(int &a, int &b);void selection_sort(vector<int> &nums);void in...原创 2020-04-06 18:12:06 · 140 阅读 · 0 评论 -
leetocde460. LFU缓存
设计并实现最不经常使用(LFU)缓存的数据结构。它应该支持以下操作:get 和 put。get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。put(key, value) - 如果键不存在,请设置或插入值。当缓存达到其容量时,它应该在插入新项目之前,使最不经常使用的项目无效。在此问题中,当存在平局(即两个或更多个键具有相同使用频率)时,最近最少使用的键将被去除。...原创 2020-04-06 10:07:21 · 188 阅读 · 0 评论 -
C++四种类型的转换方式
写在前面参考:链接static_castconst_castreinterpret_castdynamic_caststatic_cast用于内置类型的转换,以及有继承关系的类之间的转换。说明:基类和派生类之间进行转换时向上转换:派生类向基类进行转换向下转换:基类向派生类进行转换#include<bits/stdc++.h>using namespac...原创 2020-04-04 10:47:04 · 292 阅读 · 0 评论 -
C++ 虚函数 从入门到精通
写在前面在面向对象的程序设计中为什么会出现虚函数这个说法呢?万物究其本源:1.面向对象的三大特征:封装:类继承多态:动态绑定,当使用基类的引用(或者指针)对象调用一个虚函数时,将发生动态绑定,会根据对象本身的类型调用对应的函数2.虚函数是在继承这一特征上出现的继承指的是基类和派生类的层次关系,派生类可以直接或间接的继承基类。基类:定义在层次关系中,所有类共同拥有的数据成员...原创 2020-04-03 18:03:08 · 268 阅读 · 0 评论 -
C++ 基类与派生类 的详细说明
基类:派生类:1.派生类到基类的类型转换可以把派生类的对象当成基类的对象使用可以将基类的指针或者引用绑定到派生类对象的基类部分(派生类到基类的类型转换)2.派生类的构造函数派生类的构造函数:每个类控制自己的成员初始化的过程,在这里派生类中的构造函数调用了基类的构造函数3.静态成员的继承静态成员的继承:如果基类中定义了静态成员,则在整个继承体系中只存在该成员的唯一定...原创 2020-04-02 15:28:36 · 2034 阅读 · 0 评论 -
c++中 public protected private
参考:链接转载 2020-04-02 14:38:20 · 148 阅读 · 0 评论 -
c++ =default
=default 的作用在类中定义默认的构造函数,=default可以和声明一起出现在类的内部(默认构造函数是内联的),也可以作为定义出现在函数的外部(不是内联的)内联函数内联函数的作用:避免了在函数调用时一系列的保存寄存器、拷贝实参等的操作,避免了函数调用的开销,提高了程序的执行效率,而是在调用点上内联的展开,函数定义:将函数定义成内联函数形式:在返回值前加上inline关键字...原创 2020-04-02 11:35:06 · 2373 阅读 · 0 评论 -
leetcode1111. 有效括号的嵌套深度
有效括号字符串 定义:对于每个左括号,都能找到与之对应的右括号,反之亦然。详情参见题末「有效括号字符串」部分。嵌套深度 depth 定义:即有效括号字符串嵌套的层数,depth(A) 表示有效括号字符串 A 的嵌套深度。详情参见题末「嵌套深度」部分。有效括号字符串类型与对应的嵌套深度计算方法如下图所示:给你一个「有效括号字符串」 seq,请你将其分成两个不相交的有效括号字符串,A 和 B,...原创 2020-04-01 18:02:57 · 351 阅读 · 0 评论 -
C++ static, const, static const 关键字的区别和练习
cosnt关键字:参考链接static关键字:参考链接static const 关键字和static , const的区别说明:static const 修饰的变量和 const static修饰的变量是一样的,不区分static 和 const 的先后顺序1.所修饰变量的保存区域static 所修饰的变量与类本身有关系与类的对象没有惯量,保存在静态区,程序在编译时就进行初始化,编译...原创 2020-04-01 15:35:00 · 1047 阅读 · 1 评论 -
C++智能指针
写在前面C++中的对象生命周期生命周期:程序执行时,对象存在的一段时间全局对象:生命周期从程序开始启动时分配,在程序执行结束是销毁局部自动对象:生命周期从进入其所在的程序块时开始,在离开程序块时销毁。(自动对象:只存在于块执行期间的对象)局部static对象:生命周期从第一次使用前进行分配,在程序结束时销毁,该局部静态的生命周期贯穿于函数执行结束后的一段时间。说明:如果局部静态对象定...原创 2020-03-30 15:06:38 · 326 阅读 · 0 评论 -
在vscode命令行中编译运行C++11程序
1.编译命令编译.cpp文件生成可执行文件, 同时使用c++11编译,不注明默认使用c++98g++ test.cpp -o test.exe -std=c++112.执行可执行程序test.exe原创 2020-03-29 15:36:27 · 3080 阅读 · 0 评论 -
VS Code编译支持C++11问题
写在前面看到一些解决方法是:在tasks.json文件中,args下加入参数:“-std=c++11”但是并没有解决问题,还需进一步设置。更进一步操作参考:点击链接说明:如果加入“-std=c++11”参数后未解决问题,继续接下来的操作1.点击CodeRunner的小齿轮,点击configure extension settings2.找到Code-runner:Executor M...原创 2020-03-29 15:16:27 · 2704 阅读 · 0 评论 -
leetcode820. 单词的压缩编码
给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。例如,如果这个列表是 [“time”, “me”, “bell”],我们就可以将其表示为 S = “time#bell#” 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S 中索引的位置开始读取字符串,直到 “#” 结束,来恢复我们之前的单词列表。那么成功对给定单词列表进行编码的...原创 2020-03-28 18:42:09 · 224 阅读 · 0 评论 -
C++ static关键字
用处局部静态变量:将局部变量定义成局部静态变量的目的是:让该变量的生存周期能够保存到程序块执行结束后的一段时间比较经典的一个例子是:在函数fun中定义了一个静态局部变量,只有在第一次调用时初始化,之后再进行调用时,使用之前的结果,并不进行初始化#include<bits/stdc++.h>using namespace std;int fun(){ stati...原创 2020-03-28 17:35:37 · 167 阅读 · 0 评论 -
leetcode914. 卡牌分组
给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入:[1,1,1...原创 2020-03-27 17:54:57 · 195 阅读 · 0 评论 -
999. 车的可用捕获量
在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。车按国际象棋中的规则移动:它选择四个基本方向中的一个(北,东,西和南),然后朝那个方向移动,直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜色相反的卒。另外,车不能与其他...原创 2020-03-26 18:46:46 · 176 阅读 · 0 评论 -
String Shifting(今日头条2017秋招真题)
题目链接题目我们规定对一个字符串的shift操作如下:shift(“ABCD”, 0) = “ABCD”shift(“ABCD”, 1) = “BCDA”shift(“ABCD”, 2) = “CDAB”换言之, 我们把最左侧的N个字符剪切下来, 按序附加到了右侧。给定一个长度为n的字符串,我们规定最多可以进行n次向左的循环shift操作。如果shift(string, x) = s...原创 2020-03-26 17:24:50 · 347 阅读 · 0 评论 -
leetcode892. 三维形体的表面积
在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输入:[[1,1,1],[1...原创 2020-03-25 09:31:43 · 199 阅读 · 0 评论 -
leetcode面试题 17.16. 按摩师
一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入: [2,7,...原创 2020-03-24 17:08:53 · 336 阅读 · 0 评论 -
leetcode876. 链表的中间结点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.v...原创 2020-03-23 17:58:05 · 161 阅读 · 0 评论 -
leetcode945. 使数组唯一的最小增量
给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。示例 2:输入:[3,2,1,2,1,7]输出:6解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。可以看出 5 次...原创 2020-03-22 18:43:32 · 193 阅读 · 0 评论 -
leetcode365.水壶问题
有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1: (From the famous “Die Hard” example)输入: x = 3, y = 5, z...原创 2020-03-22 16:48:55 · 451 阅读 · 0 评论 -
leetcode面试题40. 最小的k个数
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0] 限制:0 <= k <= arr.length <= 1000...原创 2020-03-20 18:04:46 · 318 阅读 · 0 评论 -
leetcode836. 矩形重叠
矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例 2:输入:rec1 ...原创 2020-03-18 16:43:09 · 220 阅读 · 0 评论 -
leetcode1160. 拼写单词
给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。示例 1:输入:words = ["cat","bt","hat"...原创 2020-03-18 09:45:18 · 241 阅读 · 0 评论 -
leetcode面试题 01.06. 字符串压缩
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1: 输入:"aabcccccaaa" 输出:"a2b1c5a3"示例2:输入:"abbccd" 输出:"abbccd" 解释:"abbccd"压...原创 2020-03-16 15:57:55 · 230 阅读 · 0 评论 -
leetcode695. 岛屿的最大面积
给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1,...原创 2020-03-15 16:20:50 · 140 阅读 · 0 评论 -
leetcode300. 最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?来源:力扣(L...原创 2020-03-15 10:47:19 · 111 阅读 · 0 评论 -
leetcode1071. 字符串的最大公因子
对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例 1:输入:str1 = "ABCABC", str2 = "ABC"输出:"ABC"示例 2:输入:str1 = "ABABAB", str2 = "ABAB"输出:"AB"...原创 2020-03-13 10:42:49 · 161 阅读 · 0 评论 -
leetcode1013. 将数组分成和相等的三个部分
给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1]) 就可以将数组三等分。示例 1:输出:[0,2...原创 2020-03-11 19:07:14 · 193 阅读 · 0 评论