练习
我一定会吃下怪人细胞
这个作者很懒,什么都没留下…
展开
-
110. 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL原创 2020-07-22 16:18:37 · 119 阅读 · 0 评论 -
101. 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool _is原创 2020-07-22 15:09:52 · 94 阅读 · 0 评论 -
100. 相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; *原创 2020-07-22 14:45:07 · 104 阅读 · 0 评论 -
剑指offer-二叉树的镜像
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: void Mirror(TreeNode *pRoot) { if(pRoot=原创 2020-07-22 12:41:03 · 88 阅读 · 0 评论 -
104. 二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3 。后序遍历方式根节点高度=Max(左子树高度,右子树高度)+1;/** * Definition for a binary tree node. * struct TreeNode { * int val; * s原创 2020-07-22 12:11:42 · 82 阅读 · 0 评论 -
965. 单值二叉树
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。示例 1:输入:[1,1,1,1,1,null,1]输出:true示例 2:输入:[2,2,2,5,2]输出:false提示:给定树的节点数范围是 [1, 100]。每个节点的值都是整数,范围为 [0, 99] 。/** * Definition for a binary tree node. * struct TreeNode { * i原创 2020-07-22 10:38:35 · 59 阅读 · 0 评论 -
牛客--二叉树的镜像
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。题目描述交换左右子树的节点再递归调用class Solution {public: void Mirror(TreeNode *pRoot) { if(pRoot==NULL) return; TreeNode *temp=pRoot->left; pRoot->left=pRoot->right; pRoot->right=原创 2020-06-12 14:07:06 · 101 阅读 · 0 评论 -
牛客--不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。在不能使用算数运算符的情况下,首先想到的是位运算先将两个数异或,计算进位:将这两个数相与的结果左移一位将进位与异或结果相加调再用自己。class Solution {public: int Add(int num1, int num2) { int sum=num1^num2; int ret=(num1&num2)<<1; i原创 2020-06-12 13:35:29 · 61 阅读 · 0 评论 -
牛客--找出所有员工当前薪水salary情况
题目描述找出所有员工当前(to_date=‘9999-01-01’)具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示CREATE TABLE salaries (emp_no int(11) NOT NULL,salary int(11) NOT NULL,from_date date NOT NULL,to_date date NOT NULL,PRIMARY KEY (emp_no,from_date));输入描述:无输出描述:salary946929440原创 2020-05-21 15:13:12 · 99 阅读 · 0 评论 -
牛客--批量插入数据
题目描述对于表actor批量插入如下数据CREATE TABLE IF NOT EXISTS actor (actor_id smallint(5) NOT NULL PRIMARY KEY,first_name varchar(45) NOT NULL,last_name varchar(45) NOT NULL,last_update timestamp NOT NULL DEFAULT (datetime(‘now’,‘localtime’));actor_id first_na原创 2020-05-21 14:55:59 · 111 阅读 · 0 评论 -
实现函数 ToLowerCase() ,该函数接收一个字符串参数 str ,并将该字符串中的大写字母转换成小写字母, 之后返回新的字符串。
利用大写字母’A’~'Z’的ASCII码值为65-90,小写字母的ASCII码值为97-122两者之间相差32,因此遍历字符串如果是大写字母就给其加上32就可以将其转化成小写字母。```cppclass Solution {public: string toLowerCase(string str) { int i,length=str.size(); ...原创 2020-02-05 20:47:38 · 2080 阅读 · 0 评论 -
一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次。 找出这两个数字,编程实现
要想找到在这个数组中出现了一次的两个数字,可以根据这两个数字异或的结果将这些数字分成两组。如果这两个数字异或的结果的某一位是1,说明这两个数字在这一位上有分歧,通过这以为分别是1或者0,将这个数组分为两组,然后分别异或,就可以找到这两个数字。代码如下:int main(){int arr[10] = { 1,2,3,4,5,6,4,3,2,1 };int i = 0, sum = 0;...原创 2020-02-02 12:53:55 · 173 阅读 · 0 评论 -
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
这道题和之前交换两个整型变量的方法相同,建立一个中间变量,然后将两个数组的值依次交换就可将这两个数组的内容交换。代码如下:int main(){int a[5] = { 1,2,3,4,5 };int b[5] = { 9,8,7,6,5 };int tem;int i = 0;for (i = 0; i < 5; i++){tem = a[i];a[i] = b[i]...原创 2019-08-24 10:47:00 · 101 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
建立一个变量a依次除以1到100然后将每次的得到的值相加,a每次循环以后乘以-1这样就可以得到这道题的答案。代码如下:int main(){int i;double a = 1, sum = 0;for (i = 1; i <= 100; i++){sum += a / i;a *= -1;}printf("%f", sum);system(“pause”);ret...原创 2019-08-24 10:54:48 · 251 阅读 · 0 评论 -
编写程序数一下 1到 100 的所有整数中出现多少次数字9。
1到100中有两种数里面包含9,一类是除以10余数为9如(9,19,29等)一类是除以10的商为9如(90,91,92等),因此只需要将这两种数找到然后每次加1就可以算出出现了多少次9。(另外需注意99在这两类中都成立不要忘了使得结果少了一次)代码如下:int main(){int count = 0;int i = 0;for (i = 0; i < 100; i++){i...原创 2019-08-24 11:05:39 · 176 阅读 · 0 评论 -
打印100~200 之间的素数
素数是只能被1和它本身整除的数,所以偶数全不是素数,只需考虑100~200中的奇数即可。代码如下:#include<stdio.h>#include<windows.h>#include<math.h>void func(int i, int j){for (i = 101; i <= 200; i+=2){for (j = 2; j &...原创 2019-08-21 15:52:57 · 100 阅读 · 0 评论 -
输出乘法口诀表
乘法口诀表就是让一个数从1到9开始与另一个数从1乘到9,因此只需要两个循环就可以完成。代码如下:void func(int n){int i = 1;int j = 1;for (i = 1; i <= n; i++){for (j = 1; j <= i ; j++){printf("%d*%d=%d “, i, j, i*j);}printf(”\n");...原创 2019-08-21 16:00:36 · 103 阅读 · 0 评论 -
判断1000年---2000年之间的闰年
闰年分为普通闰年和世纪闰年,普通闰年:公历年份是4的倍数的,一般是闰年。世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年,所以只需要满足这两个条件中的其中一个就是闰年。代码如下:void func(int n,int m){int year;for (year = n; year <= m; year++){if (year % 400 == 0 || year % 1...原创 2019-08-21 16:09:12 · 200 阅读 · 0 评论 -
给定两个整形变量的值,将两个值的内容进行交换。
要交换两个整形变量a,b的值,可以新引进一个中间变量c,先将a的值赋给c,然后将b的值给a,最后将c的值给b,这样就实现了交换两个整形变量的值。代码如下:int main(){int a = 10;int b = 20;int c = 0;c = a;a = b;b = c;printf("%d %d", a, b);system(“pause”);return 0;}...原创 2019-08-22 12:19:36 · 276 阅读 · 2 评论 -
求10 个整数中最大值。
将10个数中的第一个数取出依次与后面的9个数比较如果比这个数大的话将这两个数交换即可。代码如下:int main(){int arr[10] = { 12,32,43,645,65,76,34,87,98,10 };int max = 0;int i = 0;max = arr[0];for (i = 0; i < 10; i ++){if (max < arr[i...原创 2019-08-22 12:28:18 · 90 阅读 · 0 评论 -
将三个数按从大到小输出
将三个数从大到小输出,可以将这三个数两两相互比较,将较大的数移到前面将较小的数移到后面然后按顺序输出。代码如下:int main(){int a, b, c;int tem = 0;printf(“请输入三个数:”);scanf("%d%d%d", &a, &b, &c);if (a < b){tem = a;a = b;b = tem;}...原创 2019-08-22 12:39:22 · 210 阅读 · 0 评论 -
求两个数的最大公约数
在两个数取出较小的那个数然后从这个数到0依次循环遍历,即可得到最大公约数。需考虑当最后遍历到1时说明这两个数互质。代码如下:int main(){int a, b;scanf("%d%d", &a, &b);int smaller = a < b ? a : b;int i;int max = 0;for (i = 1; i <= smaller; i...原创 2019-08-24 10:34:20 · 136 阅读 · 0 评论