C++学习笔记(三)变量
一、标识符
用于对C++程序中的常量、变量、语句标号以及用户自定义函数的名称进行标识的符号。
C++保留关键字
二、变量与变量说明变量声明一般形式如下:
[修饰符] 类型 变量名标识符
三、整型变量
整型变量可以分为短整型、整型和长整型。
四、实型变量
单精度、双精度和长双精度。
1、单精度
类型说明符:float;
内存占4个字节
数值范围是-3.4e38~3.4e38。
2、双精度
类型说明符:double;
内存占8个字节;
数值范围是-1.7e308~1.7e308。
3、长双精度
类型说明符:long double;
内存占10个字节;
数值范围-1.1e4932~1.1e4932。
五、字符变量
类型说明符:char;
内存占1字节;
1234int main(){ char a = 'A'; cout << a;}
(1) 一个字符型数据,既可以字符形式输出,也可以整数形式输出。(2) 允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算。
C++学习笔记(二)常量及符号
常量:在C++中,使用符号表示的一些不变的值。
一、整型常量
整型常量分为:有符号整型常量和无符号整型常量。
基于基本的数据类型还可以被分为长整型和短整型。
长整型常量不是可以无限大的,其最大值根据CPU寄存器位数的不同以及编译器的不同,值也不同。
整型常量可以用十进制、八进制和十六进制数表示。
二、实型常量(浮点常量)
只能采用十进制表示,有两种表示法:小数表示法和指数表示法。
12S = 156.456;D = 5.23456e+2;
三、字符常量
使用单引号括起来的一个字符。
在对代码编译时,编译器会根据ASCII码表将字符常量转换成整型常量。
转义字符时特殊的字符常量,使用时以字符‘\’代表开始转义,和后面不同的字符表示转义后的字符。
四、字符串常量
字符串常量是由一对双引号括起来的零个或多个字符序列。
字符串常量实际上是一个字符数组,可以将字符串分解为若干个字符,字符的数量是字符串的长度。
五、其他常量
布尔常量、枚举常量、宏定义常量。
布尔常量:两个值:true和false;
枚举常量
宏定义常量:通过#define宏定义的一些值。
C++学习笔记(一)C++设计规范
一、第一个C++程序
输出”Hello World”。
123456#include<iostream>using namespace std;int main(){ cout<<"Hello World"<<endl; return 0;}
二、注释
C++注释分为两种:单行注释(行注释)和多行注释(语句块注释)。
12// 单行注释/* 多行注释 */
注意事项:
不可过多的使用注释;
代码与注释同时进行;
注释要简洁、准确;
注释位置要适当;
较长的代码要分段注释。
三、命名命名规则如下:
由英文字母、数字和下划线组成。
英文字母的大小写要加以区别。
不允许使用数字开头。
不能用C++中的关键字。
四、数据类型
五、数据输入与输出
cout:
cout<<表达式 1<<表达式 2<<...<<表达式 n;
cin
cin>>表达式 1>>表达式 2>>...>>表达式 n; ...
222. 完全二叉树的节点个数
题目点击前往
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。
完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。
示例 1:
12输入:root = [1,2,3,4,5,6]输出:6
示例 2:
12输入:root = []输出:0
示例 3:
12输入:root = [1]输出:1
解题思路思路一
可以直接利用层序遍历进行节点个数计算。
123456789101112131415161718192021222324252627/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this. ...
101. 对称二叉树
题目点击前往
给你一个二叉树的根节点 root ,检查它是否轴对称。
示例 1:
12输入:root = [1,2,2,3,4,4,3]输出:true
示例 2:
12输入:root = [1,2,2,null,3,null,3]输出:false
示例 3:
12输入:root = []输出:[]
解题思路
此题需要明确一点:二叉树是否是对称二叉树其实是要来比较根节点的左右子树是否为镜像对称。
所以需要比较的是左右子树的外侧节点和内侧节点。
这里不能使用中序遍历,方便起见可以使用层次遍历。
另外,我们还需要考虑满足对称二叉树的条件。
左节点为空,右节点不为空,不对称,return false
左不为空,右为空,不对称 return false
左右都为空,对称,返回true
左右都不为空,比较节点数值,不相同就return false
123456789101112131415161718192021222324252627282930/** * Definition for a binary tree node. * function TreeNode(v ...
226. 翻转二叉树
题目点击前往
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
示例 1:
12输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]
示例 2:
12输入:root = [2,1,3]输出:[2,3,1]
示例 3:
12输入:root = []输出:[]
解题思路深度优先递归12345678910111213141516171819/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } *//** * @param {TreeNode} root * @return { ...
前端面试题-CSS篇(三)
一、左侧固定,右侧自适应1234<div class="contioner"> <div class="left"></div> <div class="main"></div></div>
flex布局
flex-basis 用于设置子项的占用空间。如果设置了值,则子项占用的空间为设置的值;如果没设置或者为 auto,那子项的空间为width/height 的值。
flex-grow 用来“瓜分”父项的“剩余空间”。未设置默认为0
flex-shrink用来“吸收”超出的空间。未设置默认为1。
12345678910.contioner{ display: flex;}.left{ width: 200px; flex-shrink: 0;}.main{ flex-grow: 1;}
grid布局1234.contioner{ displ ...
117. 填充每个节点的下一个右侧节点指针 II
题目点击前往
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例 1:
12输入:[3,9,20,null,null,15,7]输出:3
解题思路深度优先123456789101112131415161718/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } *//** * @param {TreeNode} root * @return {number} */var maxDepth = function(root) ...
116. 填充每个节点的下一个右侧节点指针
题目点击前往
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
123456struct Node { int val; Node *left; Node *right; Node *next;}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。
示例 1:
123输入:root = [1,2,3,4,5,6,7]输出:[1,#,2,3,#,4,5,6,7,#]解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化的输出按层序遍历排列,同一层节点由 next 指针连接,'#' 标志着每一层的结束。
示例 2:
12输入:root = []输出:[]
进阶: 你只能使用常量级额外空间。 使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。
解题思路
整体思路还 ...