自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (1)
  • 收藏
  • 关注

原创 剑指Offer15

34. 二叉树中和为某一值的路径/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr),

2022-04-24 15:04:07 1037 1

原创 剑指Offer14

12. 矩阵中的路径class Solution {public: bool exist(vector<vector<char>>& board, string word) { rows = board.size(); cols = board[0].size(); for(int i = 0; i < rows; i++) { for(int j = 0; j < cols

2022-04-24 14:55:35 120

原创 剑指Offer13

21.调整数组顺序使奇数位于偶数前面class Solution {public: vector<int> exchange(vector<int>& nums) { if(nums.empty()){ return nums; } int n = nums.size(); int start = 0; int end = n - 1; wh

2022-04-22 11:26:57 296

原创 剑指Offer12

25. 合并两个有序链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {

2022-04-21 10:31:53 992

原创 剑指Offer11

18. 删除链表节点/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* deleteNode(ListNode* head, int val) {

2022-04-21 10:27:57 209

原创 剑指Offer10

46. 把数字翻译成字符串给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。class Solution {public: int translateNum(int num) { if(num < 0){ return 0; } str

2022-04-19 15:27:49 98

原创 剑指Offer09

42. 连续子数组的最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。class Solution {public: int maxSubArray(vector<int>& nums) { if(nums.empty()) { return 0; } int num = 0; int max =

2022-04-18 19:14:40 161

原创 剑指Offer08

10(1). 斐波那契数列思路:斐波那契数的边界条件是 F(0)=0和 F(1)=1。当 n>1时,每一项的和都等于前两项的和,因此有如下递推关系:F(n)=F(n-1)+F(n-2)由于斐波那契数存在递推关系,因此可以使用动态规划求解。动态规划的状态转移方程即为上述递推关系,边界条件为 F(0)和F(1)。由于 F(n) 只和F(n−1) 与 F(n-2) 有关,因此可以使用「滚动数组思想」。class Solution {public: int fib(int n)

2022-04-17 13:15:18 136

原创 剑指Offer07

26. 树的子结构输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。思路:判断一棵树是否是另一棵树的子结构,注意子结构与子树的区别子结构不能只利用根节点进行对称性递归,需要构造辅助函数,判断当两棵树根节点值相同时一棵树是否为另一棵树子结构/** * Definition for a binary tree node. * struct TreeNode { * int val; *

2022-04-17 12:24:25 46

原创 剑指Offer06

32(1). 从上到下打印二叉树从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印思路:题目要求的二叉树的 从上至下 打印(即按层打印),又称为二叉树的 广度优先搜索(BFS)。BFS 通常借助 队列 的先入先出特性来实现。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *

2022-04-16 10:31:23 111

原创 剑指Offer05

04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30] ]给定 target =

2022-04-14 17:43:01 119

原创 剑指Offer04

03. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入: [2, 3, 1, 0, 2, 5, 3]输出:2 或 3思路:(1)方式一:将输入的数组排序,从头到尾扫描数组(2)方式二:哈希表,从头到尾扫描数组,每扫描一个元素时,判断哈希表里面是否已包含该元素,没有就加到哈希表里面,有就表示找到(3)

2022-04-13 17:15:51 148

原创 剑指Offer03

05.替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”class Solution {public: string replaceSpace(string s) { string res; int size = s.size(); for(int i = 0; i < size; i++) {

2022-04-12 10:07:07 52

原创 剑指Offer02

06.从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]思路:先遍历的后输出,是种栈的思想,可以构造辅助栈来实现,也可以用递归来实现,每访问一个节点,先递归输出它后面的节点,在输出该节点自身/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *

2022-04-11 09:42:44 98

原创 剑指Offer01

09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入: [“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“deleteHead”,“app

2022-04-10 11:40:03 127

原创 模拟实现string类

1. STL容器之string类作为STL六大组件的容器,string是我们使用频率较高的一个容器,本文将从底层出发,了解string类的实现方式2. 标准库中string类的常用接口(1)默认成员函数(2)容量(3)迭代器(4)增删查改(5)字符串操作具体的常用接口可以通过:www.cplusplus.com查看3. 模拟实现string类#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>#include

2021-04-26 23:00:06 156

原创 Ubuntu16.04 ROS中安装GooGle cartographer教程

从hitcm大神的github下载step 1:安装所有依赖项sudo apt-get install -y google-mock libboost-all-dev libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libprotobuf-dev libsuitesparse-dev libwebp-dev ninja-build protobuf-compiler python-sphinx ros-kinetic-tf2

2021-03-29 18:07:36 237

原创 一个比较完善的日期类(二)

日期类class Date{public: //构造函数 Date(int year = 1900, int month = 1, int day = 1); //拷贝构造,赋值,析构不需要实现,使用默认的就可以了 //运算符重载 Date operator+(int day); // 日期加上天数 Date operator-(int day); // 日期减去天数 Date& operator+=(int day); // 日期+=天

2021-03-03 22:28:19 166 1

原创 一个比较完善的日期类Date(一)

实现一个日期类了解到类中的默认成员函数之后,我们可以自己实现一个简单的日期类,由于代码较多,在这篇博客里我只实现了日历类,日期类的实现后面会上链接分析要实现的功能1. 日期类class Date{public: //构造函数 Date(int year = 1900, int month = 1, int day = 1); //拷贝构造,赋值,析构不需要实现,使用默认的就可以了 //运算符重载 Date operator+(int day); //

2020-12-17 22:32:56 398

原创 C++之默认成员函数(二)

这篇博客我将介绍后三个默认成员函数(1) 赋值运算符重载:operator作用:让编译器能够支持自定义类型的一些相应运算符操作参数类型:值,引用返回值:返回*this,引用支持连续赋值检测是否自己给自己赋值:判断地址是否相同调用:一个类如果没有显式定义赋值运算符重载,编译器也会生成一个,完成对象按字节序的值拷贝注意:不能创建新的操作符参数不能全为内置类型,内置类型的操作符不能改变其含义作为类成员的重载函数时,有一个默认的形参this,限定为第一个形参.、::、sizeof、?:.

2020-11-08 17:30:29 69

原创 C++之默认成员函数(一)

1. 首先得知道什么是默认成员函数所谓默认成员函数就是用户没有显示实现该成员函数,编译器会替用户实现一份,没有显示定义就是没有自己实现2. 其次要知道默认成员函数有哪些任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数3. 下面我将对以上6个默认成员函数做详细解释(1)构造函数作用:创建对象,初始化成员变量构造函数调用时机:当创建对象时,由编译器自动来进行调用,并且在对象的生命周期内只调用一次特点:a. 函数名与类名相同b. 无返回值c. 可以重载注意:a.

2020-11-07 21:24:29 340

原创 C++-------什么是this指针?this指针详解

1. this是一个指针,里面放置的是当前对象的地址(成员函数执行时,调用该成员函数的对象)this指针是类“成员函数”第一个隐藏的参数,该指针指向调用成员函数的对象(当前对象)2. this指针的特性(1) 只能在成员函数中使用(2) this指针的类型:类类型* const(3) this指针没有存储在对象中,因此不会影响对象的大小,而是在成员函数运行时,时时刻刻指向当前对象(4) this指针是“成员函数”第一个隐藏的参数,“隐藏的”—用户在实现成员函数时,不用显式给出,该参数是编

2020-10-08 21:02:34 9620 3

原创 如何在VS2019安装OpenCV库

如何在VS2019安装OpenCV库1. 准备事项a. VS2019安装(这里不再介绍安装)b. 下载OpenCV库(下载链接:下载OpenCV库)解压好的文件如下2. 配置环境变量给电脑添加环境变量(此电脑->属性->高级系统配置->环境变量->path)这里需要注意,路径是你安装OpenCV的路径3. VS2019中的配置在VS2019中配置所需的环境需要注意在X64下面(1)右键项目属性(2)VC++目录,平台选择X64,右侧包含目录

2020-09-01 10:33:59 7623 4

原创 对类和对象(C++)的了解

正在更新中…1. 类的基本概念(1) C语言和C++的区别C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题;C++是面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。面向对象的三大特性:封装、继承、多态(2)类的定义使用struct/class对于struct来说,C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数类中的元素称为类的成员:类中的数据称为类的属性或者成员变量;类中的函数称为类

2020-08-31 17:50:28 197

原创 python3.6下安装dlib的问题

我在Windows的cmd窗口使用 pip install dlib安装dlib经常报错后来查了好多,是版本不匹配的问题使用pip intsall dlib==19.6.1成功了

2020-04-17 16:12:37 652

原创 C++中 char* / string / char [] 的转换

一、string转char*。主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy();1.data()方法,如:string str = "hello sust";const char* p = str.data();//加const 或者用char * p=(char*)str.data();的形式同时有一点需要说明,这里在de...

2019-05-13 10:45:44 310

原创 yum安装出现Cannot find a valid baseurl for repo: base/7/x86_64解决方法

1、打开 vi /etc/sysconfig/network-scripts/ifcfg-eth0(每个机子都可能不一样,但格式会是“ifcfg-eth数字”),把ONBOOT=no,改为ONBOOT=yes2、重启网络:service network restart...

2019-03-01 14:36:15 5612

原创 yum安装时出现No more mirrors to try.

可能原因:可能是不正常删除造成的解决方法:yum clean allyum makecacheyum -y update然后重新安装

2019-03-01 14:34:21 33267 2

原创 yum提示Another app is currently holding the yum lock; waiting for it to exit...问题的解决

Loaded plugins: fastestmirror, langpacksExisting lock /var/run/yum.pid: another copy is running as pid 9207.Another app is currently holding the yum lock; waiting for it to exit... The other appl...

2019-03-01 14:28:35 6788

原创 分词技术

分词分词技术就是搜索引擎针对用户提交查询的关键词串进行的查询处理后根据用户的关键词串用各种匹配方法进行的一种技术。当然,我们在进行数据挖掘、精准推荐和自然语言处理工作中也会经常用到中文分词技术。词是最小的能够独立活动的有意义的语言成分,英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此中文是一定要分词的。而且nlp的基础任务中,关键词抽取,...

2019-02-21 09:45:00 973

原创 二叉搜索树的基本操作

二叉搜索树概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树结构typedef int DataType;typedef struct BSTreeNode { DataType key; ...

2019-02-12 13:50:37 196 1

原创 求解Top K问题

找最小的 k 个数据需要建大堆,TopK 最好不要在原数组上调整向下调整void ArrayAdjustDown(int array[], int size, int root){ int parent = root; while (1) { // 先判断有没有孩子(叶子结点) // 数组角度去想 -&gt; 孩子的下标是否越界 // 只要判断左孩子的下标(因为...

2019-01-28 16:24:42 253

原创 浅谈三次握手,四次挥手

TCP可靠性:校验和、去重、按序到达、确认应答、超时重发、连接管理、三次握手四次挥手、流量控制、拥塞控制,通过滑动窗口、快速重传、延迟应答和捎带应答来提高性能面向连接:在发送数据前,通信双方必须在彼此间建立一条连接,所谓的连接就是客户端和服务器内存中保存的关于对方的信息,如IP地址、端口号等面向字节流:他会处理IP层或以下层的丢包、重复以及错误问题。三次握手四次挥手TCP服务模...

2019-01-26 18:21:13 190 1

原创

堆的概念如果有一个关键码的集合K={k0,k1,k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:K[i] &amp;lt;= K[2i+1] 且 Ki&amp;lt;= K[2i+2] (K[i] &amp;gt;= K[2i+1] 且 K[i] &amp;gt;= K[2i+2]) i =0,1,2…,则称为小堆(或大堆)。堆的特点小(大)堆中任一结点的关键码均小...

2019-01-24 13:20:12 127

原创 模拟实现string类

string类的模拟实现本文只是对部分函数进行分析和代码展示,具体代码我已经上传到GitHub上面了GitHub链接:https://github.com/Sveter/CPlusPlusstring类string是表示字符串的字符串类该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。string在底层实际是:basic_string模板类的别...

2019-01-17 18:36:46 607

原创 Singleton单例模式

单例模式一个类只能创建一个对象,即单例模式,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享实现模式:饿汉模式懒汉模式饿汉模式就是说不管你将来用不用,程序启动时就创建(静态的)一个(定义一个静态对象)唯一的实例对象优缺点:优点:简单缺点:可能会导致进程启动慢,且如果有多个单例类对象实例启动顺序不确定。class S...

2018-12-08 18:19:06 525

原创 二叉树(三)

求二叉树中两个节点的最近公共祖先节点思路1:如果两个节点在左右子树,最近的就是他们的根结点 两个节点在同一侧,用子问题方法求解BTreeNode * Find(BTreeNode *root, TDataType data){ if(root == NULL) { return NULL; } if(root-&gt;data ...

2018-12-01 16:06:42 122

原创 对new/delete的认识

new/delete的认识回顾:C语言的内存管理malloc/calloc/realloc/free函数原型//返回值:成功:空间首地址,失败:NULL//malloc void * malloc(size_t size);//size---申请空间的字节数//calloc(初始化为0)void *calloc( size_t num, size_t size );......

2018-11-29 15:23:46 150

原创 二叉树(二)

二叉树的基本操作求节点个数 求叶子节点个数 求第K层节点个数 求二叉树高度 查找节点是否在树中 判断完全二叉树 求二叉树镜像求节点个数//采用后序遍历的方式,先计算左边,在计算右边,最后加上根结点int GetSize(BTreeNode *root){ if(root == NULL) { return 0; } ...

2018-11-05 22:41:04 102

原创 C++基础

命名空间命名空间定义(namespace)普通的命名空间 命名空间的嵌套 多个命名空间名称相同,编译器会自动合并//普通的命名空间namespace N1 // N1为命名空间的名称{ int a = 10; int b = 20; int Add(int left, int right) { return left + right; }}//命名空...

2018-10-27 23:19:53 125

拳击小游戏

亲爱的朋友们,你们好,首先这是一个非常简单的C语言拳击小游戏,其次,我想跟大家分享一下学习的方法,以便我们能够共同学习。

2017-09-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除