![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 54
「已注销」
这个作者很懒,什么都没留下…
展开
-
【剑指offer】【C++】13. 机器人的运动范围
地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:m = 3原创 2021-06-24 22:49:14 · 325 阅读 · 0 评论 -
【剑指offer】【C++】12. 矩阵中的路径
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在上面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。示例 1:输入:board = [["A","B","C","E"],["S","F","C","S"],["A","原创 2021-06-24 15:26:05 · 353 阅读 · 0 评论 -
【剑指offer】【C++】09. 用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead","appendTail",原创 2021-06-23 16:06:07 · 139 阅读 · 0 评论 -
【剑指offer】【C++】07. 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7 限制:0 <= 节点个数 <= 5000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/z原创 2021-06-23 15:45:32 · 204 阅读 · 1 评论 -
【剑指offer】【C++】06. 从尾到头打印链表
1 题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1] 限制:0 <= 链表长度 <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2 考点:反向获取链表内容3原创 2021-06-23 14:22:02 · 140 阅读 · 0 评论 -
【剑指offer】【C++】05. 替换空格
1 题目描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy." 限制:0 <= s 的长度 <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2 考点:string的额外操作3原创 2021-06-23 12:35:47 · 234 阅读 · 0 评论 -
【剑指offer】【C++】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 =原创 2021-06-23 11:06:03 · 200 阅读 · 0 评论 -
【剑指offer】【数组】03. 数组中重复的数字
题目:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof著作权归领扣网络所有原创 2021-06-21 10:49:42 · 152 阅读 · 0 评论 -
【剑指offer】【C++】【回溯法之排序树】38. 字符串的排列
文章目录1 题目2 代码1)传入字符串字符不重复,那么就不需要去判断是否存在字符的重复问题。2 主要思想1)回溯法理解:2)本题就是排序树1 题目输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-原创 2021-05-31 13:09:24 · 300 阅读 · 0 评论 -
【剑指offer】【C++】68 - II. 二叉树的最近公共祖先
文章目录1 题目2 主要思路:3 代码:1 题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p原创 2021-05-30 08:41:32 · 293 阅读 · 0 评论 -
【剑指offer】【C++】68 - I. 二叉搜索树的最近公共祖先
文章目录1 题目2 主要思路1)考点:二叉搜索树的遍历或者查找2)主要想法:3)考虑问题:3代码1)我的代码2)优秀代码:迭代方式3)优秀代码:递归方式1 题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,nul原创 2021-05-28 14:23:55 · 402 阅读 · 0 评论 -
【剑指offer】【C++】55 - I. 二叉树的深度
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof著作权归领扣网络所有。商业转载请联系官方原创 2021-05-28 00:31:03 · 290 阅读 · 0 评论 -
【剑指offer】【C++】54. 二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第k大的节点。 示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1输出: 4 限制:1 ≤ k ≤ 二叉搜索树元素个数来源:力扣(LeetCode)链接:h原创 2021-05-27 23:13:23 · 275 阅读 · 1 评论 -
【剑指offer】【C++】32 - II. 从上到下打印二叉树 II
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-l原创 2021-05-25 12:42:02 · 179 阅读 · 0 评论 -
【剑指offer】【C++】【二叉树】28. 对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/dui-原创 2021-05-25 10:41:43 · 169 阅读 · 0 评论 -
二叉树的深度优先和广度优先遍历【转载】
二叉树的深度优先和广度优先遍历(超详细步骤)(java实现)转载 2021-05-24 23:28:50 · 87 阅读 · 0 评论 -
【剑指offter】【C++】【二叉树】27. 二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 11 主要思路: 考的知识是二叉树的遍历。在遍历非叶子节点时,交换左右指针的内容即可。2 实现代码:/** * Definition for a binary tree node. * struct Tree原创 2021-05-24 22:45:28 · 208 阅读 · 2 评论 -
【C++】pair类型的基本操作总结
链接如下:C++ pair的基本用法总结(整理)原创 2021-05-22 16:30:11 · 146 阅读 · 0 评论 -
【C++】【基础知识】直接初始化与拷贝初始化
文章来源,建议看原文:直接初始化与拷贝(复制)初始化认识这两种初始化有助于我们加深对语言的理解,可以更好的优化代码~我们常见的几种初始化的形式:string str1 = "first"; //拷贝初始化,编译器允许把这句话改写为string str(“first”),但是string类必须有public的拷贝(移动)构造函数string str2(10,'a'); //直接初始化string str3(str2); //直接初始化string str4 =转载 2021-05-22 10:46:08 · 798 阅读 · 0 评论 -
【C++】【排序】排序算法概要
1 总结优化后的快速排序性能最优;序列情况:如果待排序列基本有序,或者序列短,适合采用简单算法(冒泡、选择、插入),序列长适合改进的算法;时间情况:堆排与归并排较为稳定,而快排时间不确定;空间情况:归并排强调要马跑得快,就要给马吃饱。快排次之,堆排最少。稳定性情况:归并排最好;2 排序示意图下图均来自菜鸟教程的内容:链接1)冒泡2)选择3)插入4)希尔5)堆排6)归并7)快排...原创 2021-05-21 15:24:04 · 106 阅读 · 0 评论 -
【C++】【排序】快速排序
1 主要思想5 2 4 8 6 3 2 4 8 1 )从数列端选取第一个元素比如5,经过一次大循环,让此元素位于数列中间。此时数列被分为两部分,小于等于5 以及 大于等于5的。之后对小于等于5的部分数列以及大于等于5的数列再次应用此方法,各自又可以分为两个子部分,循环往复,最后经过回溯,就可以完成排序。排序的终止条件是左边的索引low >= high。 2)对于每个循环中的操作是,获取左端第一个元素,存入变量pivot,从右边第一个值开始比较,如果比pivot大或者等于,就不移动,这是原创 2021-05-21 13:32:01 · 170 阅读 · 0 评论 -
【C++】【排序】堆排序
图片来源于菜鸟教程,还有讲解:链接1 基础知识1)树的新理解方法: (非空树)一棵树有一个根,其余结点又可以划分为不同的集合,每一个集合又是一棵树,并且称为根的子树。 在完全二叉树中,由于每个结点最多有两个孩子结点,因此完整的最小的一棵子树是由三个结点构成。也就是说,根与两个孩子构成一棵树,而其两个孩子作为根也可以构成一棵树,整颗大树是由一棵棵小树构成。详细定义见<大话数据结构>P1512)树中根与孩子结点间序号关系:总根index=1: 在有的教材中对树的标记从i原创 2021-05-21 10:38:09 · 137 阅读 · 2 评论 -
【剑指offer】【C++】【栈】59-II 队列的最大值
题目:请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -11 思考: 考虑一个队列如:1 2 5 1 4 7 4 2 3,逐渐入队时,应该使用一个队列queue(适配器)来保存此输入数据。另外对于其最大值的保存采用双向队列deque(容器)来保存。<1>queue:1deque:1<2&原创 2021-05-19 23:32:38 · 248 阅读 · 0 评论 -
【剑指offer】【C++】【栈】30.包含min函数的栈【简单】
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。1 思考:1)使用的数据结构: 数组。定义栈数据结构,可以使用数组或者链表来实现基本的运算。在《大话数据结构》中作者提出使用数组实现栈时可以不固定栈头以及栈尾,也就是说达到栈尾以后拐到栈头继续存。 **链表。**使用链表来存储是我比较喜欢的,因为不用考虑分配的内存不够用的情况,但是在每个节点处会多出一个指针域,以及在访问时需要遍历。但是栈.原创 2021-05-19 15:51:55 · 268 阅读 · 0 评论 -
【C++】【容器】容器适配器Stack,Queue,Priority Queue
1 简介Stack:后进先出(LIFO)Queue:先进先出(FIFO)Priority Queue:按照排序准则,自动将元素排序的Queue,下一个元素优先级总是最高bitset:位域2 Stack<>1)头文件stack定义注意头文件#include <stack>头文件内容namespace std{ template <typename T, typename Container = deque<T>>原创 2021-05-19 14:13:58 · 100 阅读 · 0 评论 -
【C++】using namespace std的建议
文章转载 :http://www.lonecpluspluscoder.com/2012/09/i-dont-want-to-see-another-using-namespace-xxx-in-a-header-file-ever-again/(原文链接已失效)以下是正文:在这里,我毫不回避地说了这句话:我再也不想在任何头文件中看到“using namespace xxx;”了 作为一个开发者/团队领导者,我经常会去招聘新的项目成员,有时候也帮助其他组的人来面试应聘者。作为应聘流程之一,我经转载 2021-05-11 08:46:52 · 172 阅读 · 0 评论 -
【C++】静态数据为什么只能在类外定义
c++ 类的静态数据成员为什么不能在类内定义static局部对象必须遵守这样的规则:确保在程序执行流程第一次经过该对象的定义语句时或者之前进行初始化。因此不创建对象就不会初始化static数据成员。为什么static成员变量一定要在类外初始化?因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这是矛盾的个人认为:从分配内存、生命周期以及数据访问的角度考虑【拙见,不知正确与否】:首先,为了使类的静态数据成员属于类,而不属于每个对象,因此..原创 2021-05-10 14:47:10 · 3092 阅读 · 0 评论 -
【C++】程序报错以及VSCode报错收藏
一、链接:vector不是模板二、其他问题:定义类时,花括号{}后要添加分号;三、VSCode报错:1)启用调试时报错 终端将被任务重用:网上很多让修改task.json代码的,但是不管用,后来发现是程序出了问题,将bug改掉后,就不报错了。2)VS Code:声明与实现分开Visual Studio Code 其本质是一个比较高级的编辑器,并不是一个完整的IDE,所以它不能组织相关源码文件参与编译,想要多个源文件参与编译链接,需要用到 makefile 。c++中我们cpp文件和.h文件原创 2021-05-10 11:55:19 · 688 阅读 · 0 评论 -
【C++】C++中#ifndef和#pragma的用法
转载链接:C++中#pragma once和#ifndef用法原创 2021-05-10 09:20:38 · 141 阅读 · 0 评论 -
【使用教程】VSCode创建json文件
一、相关疑问1).vscode文件夹是什么?主要作用是以.json的方式保存相关配置信息,如编译任务的配置、调试任务的配置、工作环境的配置等。2)c_cpp_properties.json是什么?其为C/C++插件UI界面的json形式,也就是说将C/C++插件的设置信息以json的形式保存下来。在每次创建新文件夹时,都需要配置此文件。3)task.json与launch.json是什么?task.json: 是用于编译文件的配置信息,用于生成可执行文件(Linux下为a.out,Windo原创 2021-05-09 20:58:25 · 16987 阅读 · 3 评论 -
【安装教程】windows10下使用VScode配置C++环境
一、概念了解参考:GCC是什么?GCC与gcc,g++区别GDB是什么?gcc,clang,msvc等编译器有什么区别?1)GUNGUN全称为GUN’s Not UNIX,目标是打造一套完全自由(自由使用、自由更改、自由发布)、开源的操作系统,即GUN操作系统。但是其选用了Linux作为GUN操作系统的内核(因为自己开发的内核性能比不上Linux)。2)GCCGCC全称为 GNU Compile Collection,即GUN编译器集合。也就是GCC中不仅可以编译C语言程序,还可以处理C+原创 2021-05-08 14:43:02 · 339 阅读 · 0 评论 -
【收藏】C++博文链接收藏
C++输出二进制数c++ 常量/有符号数和无符号数原创 2021-05-06 14:47:13 · 82 阅读 · 0 评论 -
【C++ primer】C++ 3.23
初始化;属性:长度、是否空(一个注意点:size)两个string间:1)比较,依靠长度(字母都相同,长的就大)以及首个不同的字母(优先)2)赋值3)相加(特殊:其中一个是字面值对象,字面值可以转化为string对象,也就是从左到右相加,加号两边至少有一个是string,否则没办法转化)(字面值和string对象不一样,存储的地方就不一样, string能改,字面值是不能改变的)(string对象也可以与单个字符相加)一个string:注意:在访问字符串时,都要判断其是否为空s.empty()原创 2021-03-23 19:27:58 · 158 阅读 · 0 评论 -
【C++primer】第二章学习
【类型】无符号变量注意事项;(取模、不要混用) 字面值常量【变量】定义变量可以连续定义;变量的初始化方式;初始化与赋值之间的区别;如果不主动初始化,会进行默认初始化,以及默认初始化会发生的错误;问:如果变量先定义,后赋值,算作赋值还是初始化?声明与定义的区别;【标识符】字母数字下划线组成、字母或者下划线开头基于其他类型的类型:【引用】定义以及其定义的类型、初始化(必须)、本质、是否能改变引用对象、对应的地址【指针】定义以及其定义类型、是一种变量,因此函数体内不初始化不能访问、初原创 2021-03-16 07:33:17 · 167 阅读 · 0 评论 -
【C++】数组类案例,实现[ ] 、==、 !=的重载
#pragma onceusing namespace std;class Array{public: Array(int length); Array(const Array& obj); ~Array();public: void setData(int index, int value); int getData(int index); int length(); int& operator[](int index); Array& operator原创 2021-03-06 23:05:26 · 214 阅读 · 0 评论 -
【C++】字符串指针与字符数组的理解
字符串指针:1 书写格式const char* p = "abcdef";//必须使用const内存四区包含代码区、栈、堆、全局区。全局区内存储常量、全局变量、静态变量,堆中存放使用new后者malloc动态申请存储空间 存储的变量,栈中存放局部变量,可由程序释放。为什么要加const修饰符?因为 “aaaaa”字符串存储在 常量区,不能被改变。因此采用const char* p的形式。下面的做法是错误的:p[0] = 'a';2 访问1)直接输出p,遇到\0停止输出const char原创 2021-03-06 22:00:57 · 355 阅读 · 0 评论 -
C++心得
【const】【匿名对象】【浅拷贝】原创 2021-03-06 19:24:48 · 131 阅读 · 0 评论 -
【C++】操作符重载
注意:操作符重载可以当做==“自定义类的运算”==1 为什么需要操作符重载?对于基础的变量,int等,不需要重载就知道如何做,但是对于自定义类,就无法进行运算,比如复数类。2 操作符重载总结1)操作符重载本质上是一个函数,可以采用 友元函数或者成员函数实现。但是采用这两种函数传递参数、实现代码、应用场合均不同。全局函数与成员函数的比较:全局函数中不传递this指针,成员函数默认传递this指针,因此成员函数可以少一个参数;成员函数可以访问私有变量,全局函数需要转化为友元函数才可以。2)操原创 2021-03-05 23:45:09 · 885 阅读 · 1 评论 -
【C++】友元函数以及友元类
声明:本文章是在学习了【传智扫地僧】的C++视频后做的笔记。友元函数1)友元函数的作用:类很好的将成员函数以及成员变量进行封装,并且设置public、protected、private用于限制访问。而友元函数用于破坏类的封装性,可以通过与类“交朋友,获得批准”,对传入全局函数中的对象的私有属性进行修改。用于操作符重载中的<<、>>。2)实例:#include <iostream>using namespace std;class A{public.原创 2021-03-04 22:37:28 · 192 阅读 · 1 评论