C++
文章平均质量分 68
GeordieX
这个作者很懒,什么都没留下…
展开
-
C++学习——树的先序遍历
遍历树A的每个节点,可用先序遍历先序遍历的模板:void preOrder(TreeNode *r) { if (!r) return; // process r preOrder(r->left); preOrder(r->right);}原创 2020-07-28 14:23:46 · 386 阅读 · 0 评论 -
剑指offer——链表倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。思路创建一个新链表,遍历,记录结点个数n,倒数第k个结点即正数第n-k个结点,输出即可/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsi原创 2020-06-23 14:46:21 · 81 阅读 · 0 评论 -
剑指offer——调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路【不使用额外数组】设置两个下标 i,j,j用来遍历数组,i用来记录奇数位置。遍历时遇到奇数,则将该元素放到i位置,移动元素之前先将i+1至j的元素整体后移一位,注意要从后往前避免元素覆盖,最后i++class Solution {public: void reOrderArray(vector<int>原创 2020-06-23 14:33:23 · 77 阅读 · 0 评论 -
剑指offer——矩形覆盖
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:思路 当n=1时,只能竖着覆盖,f(1)=1; 当n=2时,既可以横着覆盖,也可以竖着覆盖,f(2)=2; 当n=N时,只需要考虑第一块如何覆盖即可,详见下图: 简单递归class Solution {public: int rectCover(int numb..原创 2020-06-22 16:10:37 · 73 阅读 · 0 评论 -
剑指offer——变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路设f[i] 表示 当前跳道第 i 个台阶的方法数。那么f[n]就是所求答案。假设现在已经跳到了第 n 个台阶如果上一步跳 1 步到达第 n 个台阶,说明上一步在第 n-1 个台阶。已知跳到第n-1个台阶的方法数为f[n-1]如果上一步跳 2 步到达第 n 个台阶,说明上一步在第 n-2 个台阶。已知跳到第n-2个台阶的方法数为f[n-2]。。。如果上一步跳原创 2020-06-22 14:52:05 · 94 阅读 · 0 评论 -
剑指offer——重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回思路: 先序遍历的第一个元素肯定为根节点,再在中序遍历中找到根节点的下标,再分别存放在两个数组:左子树和右子树,借助迭代思想,迭代到最后肯定为重建好的二叉树。/** * Definition for binary tre...原创 2020-06-12 19:44:03 · 148 阅读 · 0 评论 -
C++学习——链表[list]
3.7 list容器3.7.1 list基本概念**功能:**将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表由一系列结点组成[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hHS0cY7X-1591776312919)(assets/clip_image002-1547608564071.jpg)]结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域ST原创 2020-06-10 16:07:25 · 176 阅读 · 0 评论 -
STL初识
2.1 STL的诞生 长久以来,软件界一直希望建立一种可重复利用的东西 C++的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作 为了建立数据结构和算法的一套标准,诞生了STL 2.2 STL基本概念 STL(Standard Template Library,标准模板库) STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(ite...原创 2020-06-07 14:36:26 · 111 阅读 · 0 评论 -
错误 C2512 “Person”: 没有合适的默认构造函数可用
在联系类模板案例时,遇到的一个问题,代码如下#include"MyArray.hpp"void printMyArr(MyArray <int>& arr){ for (int i = 0; i < arr.GetSize(); i++) { cout << arr[i] << endl; }}void test01(){ MyArray <int> myarr1(10); for (int i = 0; i &原创 2020-06-07 12:34:00 · 2345 阅读 · 0 评论 -
Opencv中Rect类的用法
一些比较实用的函数:size()函数返回矩形的尺寸大小。返回类型为cv::Size。area()函数返回矩形的面积,也就是矩形包含的像素点个数。也就是矩形的(宽*高)的值。contains(Point)能检测点是否在矩形内。inside(Rect)检测矩形是否在矩形内。tl()返回矩形左上角的点坐标。即top-left。br()返回矩形右下角点坐标。即bottom-right。如...原创 2020-04-13 16:21:44 · 935 阅读 · 0 评论 -
Mat的介绍和使用
Mat:基本图像容器在以前的老式opencv中使用的是C结构,很烦人,需要注意内存的申请和销毁,后来转为C++接口,使用Mat对象,自动申请和销毁内存,很方便。Mat由基本的两部分组成:矩阵头(包含图片信息,例如矩阵大小,存储方法等)和一个指向包含像素点信息的指针。矩阵头部大小是常数,但是矩阵的大小却各不相同。Mat中重要的几个成员:size_t elemSize() con...原创 2020-04-13 15:31:59 · 1199 阅读 · 0 评论 -
using namespace std
简要意思就是使用标准库using namespace std 意思: using 和namespace都是C++的关键词。 std 是标准程序库所驻之命名空间(namespace)的名称。如果使用Boost的库 ,那就写 using namespace boost; 如果使用C++ 标准库 那就写 using names...原创 2020-04-13 14:45:43 · 122 阅读 · 0 评论