
c++
基础学习
一天学习一兜兜
这个作者很懒,什么都没留下…
展开
-
C++关键字(一)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言对C++中一些关键字的学习提示:以下是本篇文章正文内容,下面案例可供参考一、sizeofsizeof用途:https://www.cnblogs.com/huolong-blog/p/7587711.html定义一个空的类型,里面没有任何成员变量和成员函数。对该类型求sizeof,得...原创 2021-07-22 16:37:12 · 197 阅读 · 0 评论 -
旋转数组的最小数字
文章目录一、题目二、代码实现1.思考过程2.读入数据总结一、题目> 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。数组中可能存在重复数字。二、代码实现1.思考过程 旋转之后的数组实际上可以划分为两个排序的子数组,而且前面子数组的元素都大于或者等于后面子数组的元素。注原创 2021-07-13 11:42:49 · 120 阅读 · 0 评论 -
实现替换空格
文章目录一、题目二、代码实现1.思考过程2.代码总结一、题目 请实现一个函数,把字符串中的每个空格替换成"%20"。例如,输入"We are happy.", 则输出"We%20are%20happy."二、代码实现1.思考过程 可以先遍历一次字符串,这样就能统计出字符串空格的总数,并可以由此计算出替换之后的字符串的总长度。每替换一个空格,长度增加2,因此替换以后字符串的长度等于原来的长度加上2乘以空格数目。2.代码代码如下(示例):/ leng 为字符数组string 的总容量vo原创 2021-07-12 16:52:26 · 135 阅读 · 0 评论 -
字符串介绍
文章目录一、字符串二、问题和答案1.面试题2.答案总结一、字符串 C/C++中每个字符串都以字符’\0’作为结尾,这样我们就能很方便地找到字符串的最后尾部。但由于这个特点,每个字符串中都有一个额外字符的开销,稍不留神就会造成字符串的越界。二、问题和答案1.面试题代码如下(示例):int _tmain(int argc, _TCHAR* argv[]){ char str1[] = "hello world"; char str2[] = "hello world"; char* s原创 2021-07-11 10:44:09 · 186 阅读 · 0 评论 -
二维数组中的查找
文章目录一、题目二、代码实现1.思考过程2.代码实现总结一、题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。二、代码实现1.思考过程 要求时间复杂度O(M+N),空间复杂度O(1)。其中M为行数,N为列数。该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角或左下角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当原创 2021-07-10 17:50:46 · 117 阅读 · 0 评论 -
不修改数组找出重复的数字
文章目录一、题目二、代码实现1.思考过程2.代码总结一、题目 在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的数组。例如,如果输入长度为8的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数字2或者数字3。二、代码实现1.思考过程 使用二分查找,时间复杂度O(nlogn)。不允许使用额外空间,也不允许修改原数组,因而无法排序。但是题中限定数据范围为[1,n],而序列1,2,...,n是有原创 2021-07-10 11:27:31 · 165 阅读 · 0 评论 -
数组中重复的数字
<文章目录一、题目二、代码实现1.思考过程2.代码总结一、题目在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。要求时间复杂度O(N),空间复杂度为O(1)。二、代码实现1.思考过程对于这种数组元素在[0,n-1]范围内的问题,可以将值为i的元素调整到第i个位置进行求解。如果第i原创 2021-07-10 10:53:30 · 103 阅读 · 0 评论 -
数组和指针的大小
文章目录前言一、代码实现二、答案前言数组和指针是既相关关联又有区别的两个概念。当我们声明一个数组是,其数组的名字也是一个指针,该指针指向数组的第一个元素。我们可以用一个指针来访问数组。值得注意的是,C/C++没有记录数组的大小,因此在用指针访问数组中的元素时,程序员要确保没有超出数组的边界。一、代码实现int getSize(int data[]) { return sizeof(data);}int _tmain(int argc,_TCHAR* argv[]) { int dat..原创 2021-07-10 10:16:03 · 1048 阅读 · 0 评论 -
赋值运算符函数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、题目二、代码实现总结一、题目如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString {public: CMyString(char* pData = nullptr); CMyString(const CMyString& str)' ~CMyString(void);private: char* pData;}二、代码实现代码如下(示例):CMyS原创 2021-07-09 16:47:35 · 121 阅读 · 0 评论 -
c++正则通配符问题
文章目录前言一、题目二、思路分析三、动态规划解法前言 正则表达式是一个非常有强力的工具,其中点号[.]可以匹配任意一个字符,星号[*]可以让之前的那个字符重复任意次数(包括0次)。一、题目 给我们输入两个字符串s和字符串p, s代表文本,p代表模式串,请你判断模式串p是否可以匹配文本s.我们可以假设模式串只包含小写原创 2020-09-01 11:02:18 · 702 阅读 · 0 评论 -
算法之二分查找问题详解
文章目录前言1. 二分查找框架2. 寻找一个数3. 寻找左侧边界的二分搜索4. 寻找右侧边界的二分搜索前言二分查找:思路简单,细节是魔鬼。它真的坑根本就是在于要mid加一还是减一,while里到底用 <=还是<。讨论三个二分查找场景:寻找一个数,寻找左侧边界,寻找有右侧边界。1. 二分查找框架int binarySearch(vector<int> nums, int target) { int left = 0, right = ...; while (..原创 2020-08-30 11:23:24 · 139 阅读 · 0 评论 -
c++新21点
爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下:爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字。 抽取时,她从 [1, W] 的范围中随机获得一个整数作为分数进行累计,其中 W 是整数。 每次抽取都是独立的,其结果具有相同的概率。当爱丽丝获得不少于 K 分时,她就停止抽取数字。 爱丽丝的分数不超过 N 的概率是多少?题目解析爱丽丝获胜的概率只和下一轮开始前的得分有关,因此根据得分计算概率。令 dp[x]表示从得分为 x的情况开始游戏并且获胜的概率,目标是求 ..原创 2020-06-03 10:22:50 · 402 阅读 · 0 评论 -
c++二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明:叶子节点是指没有子节点的节点。递归(dfs)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */cla.原创 2020-06-02 18:02:08 · 651 阅读 · 0 评论 -
算法之动态规划详解
一. 基本知识动态规划问题的一般形式就是求最值;求动态规划的核心问题是穷举。动态规划三要素:重叠子问题、最优子结构、状态转移方程(最难的)。重叠子问题可以通过备忘录或者DP table 来优化穷举,避免不必要的计算。最优子结构通过子问题的最值得到原问题的最值。动态规划的一般流程就是三步:暴力的递归解法 -> 带备忘录的递归解法->迭代的动态规划解法二. 辅助思考状态转移方程的思维框架明确[状态] -> 定义dp数组/函数的含义 -> 明确[选择] -> 明确原创 2020-05-28 11:29:20 · 253 阅读 · 0 评论 -
c++从根到叶的二进制数之和
主要是利用位运算,位运算是一种比较高效的方法原创 2020-05-25 15:49:27 · 188 阅读 · 0 评论 -
c++二叉树的路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点利用栈来解决问题 bool hasPathSum(TreeNode* root, int sum) { if (!root) return false; stack<TreeNode*> path; stack<int> sub; pat..原创 2020-05-25 09:18:57 · 357 阅读 · 0 评论 -
c++二叉树的最大深度
区别二叉树的深度和高度,用c++编写二叉树的最大深度和最小深度原创 2020-05-23 15:13:24 · 563 阅读 · 0 评论 -
c++二叉树的建立和遍历
有错误大家可以指出来,本文主要是中对二叉树的先序、中序和后序非递归遍历进行编写,代码如下:#include<iostream>#include<stack>using namespace std;//定义节点typedef struct node{ struct node *lchild; struct node *rchild; char data;...原创 2020-04-30 11:53:49 · 1037 阅读 · 0 评论 -
c++中智能指针的原理、分类和实现
智能指针智能指针的介绍原理作用智能指针的分类auto_ptrunique_ptrshared_ptrweak_ptr智能指针的总结智能指针的介绍原理 智能指针是一个类,这个类的构造函数中传入一个普通指针,析构函数中释放传入的指针。智能指针的类都是栈上的对象,所以当函数(或程序)结束时会自动被释放.作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。...原创 2020-04-14 21:46:11 · 537 阅读 · 0 评论