![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++语法
文章平均质量分 69
小馨馨的小翟
遗憾总是贯穿人生始终。阿里云专家博主,CSDN人工智能领域优质创作者,SnnGrow开源社区特邀作者,中国移动搬砖员工
展开
-
C++语法基础(七)——可恶的指针
根据学习菜鸟教程笔记:C++ 数据类型 | 菜鸟教程每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:在这里,type 是指针的基类型,它必须是一个有效的 C++ 数据类型,var-name 是指针变量的名称。用来声明指针的星号 * 与乘法中使用的星号是相同的。但是,在这个语原创 2022-06-19 18:26:42 · 581 阅读 · 0 评论 -
C++语法基础(六)
根据学习菜鸟教程笔记:C++ 数据类型 | 菜鸟教程 一些基本类型可以使用一个或多个类型修饰符进行修饰: 下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。注意:不同系统会有所差异,一字节为 8 位。注意:默认情况下,int、short、long都是带符号的,即 signed。注意:long int 8 个字节,int 都是 4 个字节,早期的 C 编译器定义了 long int 占用 4 个字节,int 占用 2 个字节,新版的 C/C++ 标准兼容了早期的这原创 2022-06-19 10:56:27 · 246 阅读 · 0 评论 -
C++ 语法基础(五)
输入输出: 程序与外部设备交换信息。可分为基于控制台的I/O,基于文件的I/O,基于字符串的I/O。数据流: C++ 把输入输出看作一个数据流。C++ 中相关的头文件如下表所示。 I/O对象: C++ 程序不能直接与输入输出设备交换信息,而需要通过一个对象实现。对象是输入输出设备在程序中的代理。每个 I/O 对象管理一个缓冲区,用于储存读写得数据。格式: 从输入缓冲区取数据存入变量; 将数据放入输出缓冲区。缓冲区刷新: 设置整数基数设置浮点数精度 文件: 是驻留在外储存器上,具有标识名的一组信原创 2022-06-11 20:22:39 · 541 阅读 · 0 评论 -
C++ 语法基础(四)
抽象过程:计算机的工作建立在抽象的基础上计算机层面的抽象:从计算机硬件,到机器语言,再到高级语言当出现一个抽象的任务时,需要程序员在机器模型与实际问题模型之间建立联系,按照计算机的结构去思考过程化程序设计:每个步骤用语句代替;适合解决小问题;面向对象程序设计:解决问题寻找帮手;可以解决大问题;对象与变量:都是程序中解决问题的工具;后者是语言已经设计好的工具,前者是程序员自己创建的工具面向对象的程序设计为程序员提供了创建工具的功能解决问题过程:考虑需要的工具;创建、收集工具;设计利用工具解决问题的过程代码重用原创 2022-06-11 17:32:58 · 413 阅读 · 0 评论 -
C++ 语法基础(三)
知识点指针的概念指针保存了一个内存地址,对指针的操作就是对地址的操作。可以将内存理解为一个“大数组”,指针相当于存储了一个数组下标,它指向下标对应位置的变量。指针的声明用以下代码声明指针。其中,运算符被称为取地址运算符,它返回变量在内存中的地址。void指针可以指向任意类型的值。指针的声明用以下代码声明指针。其中,运算符被称为取地址运算符,它返回变量在内存中的地址。void指针可以指向任意类型的值。取地址运算符不能作用于常量或表达式,如 或者 。因为他们在内存中并没有固定的地址。空指针空指针原创 2022-06-11 14:57:19 · 459 阅读 · 0 评论 -
C++ 语法基础(二)
自顶向下的分解,每个小问题设计为一个函数,公共小问题可以设计成一个库实现阶段自底向上的实现程序由3种基本结构组成功能顶层分解程序要做两件事:显示程序指南;模拟玩游戏的过程。的实现只要一系列的输出语句把程序指南显示一下就可以了函数的实现随机产生正反面,让用户猜,报告对错结果,然后询问是否要继续玩产生随机数的实现该函数接收用户输入的一个整型数。如果输入的数不是0或1,则重新输入,否则返回输入的值知识点石头、剪子、布游戏要求游戏规则:布覆盖石头;石头砸坏剪刀;剪刀剪碎布游戏过程:游戏原创 2022-06-08 11:41:02 · 561 阅读 · 0 评论 -
(肝了三个小时的困难题-必须记录一下)剑指 Offer 37. 序列化二叉树-----python && C++源代码
剑指 Offer 37. 序列化二叉树难度困难306收藏分享切换为英文接收动态反馈请实现两个函数,分别用来序列化和反序列化二叉树。你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示:输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅LeetCode 序列化二叉树的格式。你并非必须采取这种方式,你也可以采用其他的方法解决这个问题。示例:.原创 2022-05-24 22:24:13 · 195 阅读 · 0 评论 -
剑指 Offer 36. 二叉搜索树与双向链表--------python && C++源代码
剑指 Offer 36. 二叉搜索树与双向链表难度中等504收藏分享切换为英文接收动态反馈输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head”原创 2022-05-23 20:15:51 · 186 阅读 · 0 评论 -
字节跳动笔试题——复杂链表的复杂——剑指 Offer 35. 复杂链表的复制——python && C++源代码
剑指 Offer 35. 复杂链表的复制难度中等529收藏分享切换为英文接收动态反馈请实现copyRandomList函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个next指针指向下一个节点,还有一个random指针指向链表中的任意节点或者null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:...原创 2022-05-23 19:06:07 · 175 阅读 · 0 评论 -
约瑟夫环——公式法——附LeetCode—剑指offer题目—剑指 Offer 62. 圆圈中最后剩下的数字
约瑟夫环问题: 约瑟夫问题是个著名的数学问题,N个人围成一圈,从第一个人开始数,杀掉第M个人。然后从第M+1个人再开始数,数到第M个人再杀掉,然后再从第M+1个人开始数,数到第M个人再次杀掉,反复进行,直到这圈人只剩下最后一个人。游戏结束。那么问题来了,如何快速的判断最后留下的那个人是谁呢?这就是约瑟夫环要研究的问题。我们以数组为例研究,假设 N=8 , M=3, F(8 , 3) = 7 (这个7是 7这个人的序号) ...原创 2022-05-20 16:13:46 · 858 阅读 · 0 评论 -
有趣的数学推导题目-leetcode462. 最少移动次数使数组元素相等 II
给你一个长度为 n 的整数数组 nums ,返回使所有数组元素相等需要的最少移动数。在一步操作中,你可以使数组中的一个元素加 1 或者减 1 。示例 1:输入:nums = [1,2,3]输出:2解释:只需要两步操作(每步操作指南使一个元素加 1 或减 1):[1,2,3] => [2,2,3] => [2,2,2]示例 2:输入:nums = [1,10,2,9]输出:16提示:n == nums.length1 <= nums....原创 2022-05-19 10:19:08 · 228 阅读 · 0 评论 -
压入弹出堆栈算法-附LeetCode剑指 Offer 31. 栈的压入、弹出序列-题解-python && C++源代码
剑指 Offer 31. 栈的压入、弹出序列难度中等334收藏分享切换为英文接收动态反馈输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:tr原创 2022-05-16 12:52:20 · 237 阅读 · 2 评论 -
2022年5月14日LeetCode双周赛第三题-6068. 毯子覆盖的最多白色砖块数
6068. 毯子覆盖的最多白色砖块数难度中等4收藏分享切换为英文接收动态反馈给你一个二维整数数组tiles,其中tiles[i] = [li, ri],表示所有在li<= j <= ri之间的每个瓷砖位置j都被涂成了白色。同时给你一个整数carpetLen,表示可以放在任何位置的一块毯子。请你返回使用这块毯子,最多可以盖住多少块瓷砖。示例 1:输入:tiles = [[1,5],[10,11],[12,18],[20,25],[30,...原创 2022-05-15 13:25:41 · 1358 阅读 · 2 评论 -
前缀和+后缀和算法模板-附LeetCode习题-面试题 01.05. 一次编辑
面试题 01.05. 一次编辑难度中等142收藏分享切换为英文接收动态反馈字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 1:输入: first = "pale"second = "ple"输出: True示例 2:输入: first = "pales"second = "pal"输出: False通过次数47,199提交次数142,718解题思路:如果原创 2022-05-13 10:19:56 · 359 阅读 · 0 评论 -
C++数据结构算法(五)动态规划
例题带入:代码实现动态规划的代码实现相对简单,基本上是使用循环来计算递推序列的过程。下面直接给出代码:#include <bits/stdc++.h>#define N 1005#define M 110using namespace std;int n;int a[N][N], f[N][N];int main() { // 输入 cin >> n; for (int i = 1; i <= n; ++i) for原创 2022-05-12 22:23:16 · 613 阅读 · 0 评论 -
C++数据结构算法(四)递推与递归
递推思想简介:递推,意思就是用已经有的信息一点点推出想要知道的信息。比如,平面上有一个机器人,一开始在坐标(0,0)处,第一秒向东移动一米,第二秒向南移动两米,第三秒向西移动三米,第四秒向北移动四米……机器人一直按照这个规律移动下去。由于我们知道了最开始的时候机器人的位置,我们就可以一秒一秒地推算出接下来每一个时刻机器人的位置。这就是递推。显然,如果我们用人脑去模拟一个递推算法,是比较简单的,因为“根据已有信息推出未知信息”是我们常用的思考方式,符合直觉。如果用电脑运行递推算法,我们应该原创 2022-05-11 20:36:22 · 1020 阅读 · 0 评论 -
C++数据结构算法(三)二分查找
二分查找:原创 2022-05-11 11:29:05 · 1397 阅读 · 0 评论 -
BFS逛街算法模板-附LeetCode习题-433. 最小基因变化-广度优先搜索
433. 最小基因变化难度中等173收藏分享切换为英文接收动态反馈基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是'A'、'C'、'G'和'T'之一。假设我们需要调查从基因序列start变为end所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。例如,"AACCGGTT" --> "AACCGGTA"就是一次基因变化。另有一个基因库bank记录了所有有效的基因变化,只有基因库中的基因才是有效的基因序列。给你两个基因序...原创 2022-05-07 16:52:22 · 262 阅读 · 0 评论 -
经典位运算算法模板-附LeetCode剑指 Offer 56 - I. 数组中数字出现的次数-题解-python && C++源代码
剑指 Offer 56 - I. 数组中数字出现的次数难度中等630收藏分享切换为英文接收动态反馈一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]限制:2 <= nums.l原创 2022-05-05 11:08:32 · 188 阅读 · 0 评论 -
双指针滑窗经典问题算法模板-附LeetCode每日一题题解:713. 乘积小于 K 的子数组-题解-python && C++源代码
713. 乘积小于 K 的子数组难度中等437收藏分享切换为英文接收动态反馈给你一个整数数组nums和一个整数k,请你返回子数组内所有元素的乘积严格小于k的连续子数组的数目。示例 1:输入:nums = [10,5,2,6], k = 100输出:8解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。示例 2:...原创 2022-05-05 09:39:49 · 201 阅读 · 0 评论 -
C++数据结构算法(二)排序算法集合
排序算法(Sorting Algorithm) 的作用在于对于给定的一个元素序列,输出满足某种顺序的该序列的一个排列。代码实现 —— 数最小值数组最小值首先,如何找到n个元素的最小值,并记录它的位置? 最开始,我们默认最小值出现在数组的第1位,所以,用于记录最小值位置的变量min_pos初始值为1。 然后,枚举数组中的每个元素,并且将当前记录的最小值和枚举到的第i个元素作比较,如果当前枚举到的元素更小,说明最小值不可能出现在原来的min_pos位置,而更有可能出现的位原创 2022-05-06 16:16:58 · 374 阅读 · 0 评论 -
queue队列算法模板-附LeetCode每日一题题解:1823. 找出游戏的获胜者-题解-python && C++源代码
1823. 找出游戏的获胜者难度中等66收藏分享切换为英文接收动态反馈共有n名小伙伴一起做游戏。小伙伴们围成一圈,按顺时针顺序从1到n编号。确切地说,从第i名小伙伴顺时针移动一位会到达第(i+1)名小伙伴的位置,其中1 <= i < n,从第n名小伙伴顺时针移动一位会回到第1名小伙伴的位置。游戏遵循如下规则:从第1名小伙伴所在位置开始。 沿着顺时针方向数k名小伙伴,计数时需要包含起始时的那位小伙伴。逐个绕圈进行计数,一些小伙伴...原创 2022-05-04 10:44:30 · 311 阅读 · 0 评论 -
C++ 语法基础(一)
变量:变量是专门用来存储数据的容器,会根据数据类型决定容量大小。代码中的 int(integer)用来明确变量的数据类型int型数据的变量可以用来存储整数,如:1、23、-1等没有小数部分的数值 int型数据占有4个字节内存,不同类型的数据表示范围不同,占用的内存空间不尽相同变量名的命名规则:在C++中,变量名称也叫做标识符,表示⽤来标记和识别不同变量的不同的符号,有固定的构造规则: 只能由字⺟、数字和下划线组成;特别的;在C++中,标识符中的英文字母是区分大小写的; 例如...原创 2022-04-13 15:17:14 · 584 阅读 · 1 评论