![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
日常刷题
夏天的呆子
这个作者很懒,什么都没留下…
展开
-
堆
1.初始建堆操作复杂度是 O(n)的. 2.建堆需要用时o(n) 重新进行保持堆特性为o(lgn) 3.怎么判断一个序列是不是堆? 比如{100,6070,50,32,65} 把这个序列看成数组型的二叉树,如果根结点是i,左子树是2*i,右子树是2*i+1。 堆分为最大堆与最小堆。 2. 符合以上两种情况的序列就是堆。 4.堆数据结构是一种数组对象,它可以被视为一颗完全二叉原创 2017-07-11 08:28:53 · 315 阅读 · 0 评论 -
求n!
方法一:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>int Factorial(int n){ int i = 1; int ret = 1; for (; i <= n; i++) {原创 2017-07-29 09:29:37 · 199 阅读 · 0 评论 -
求1!+2!+3!+…+10!的结果。
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>int Add_Factorial(int n){ int sum = 1; int i =1; int ret = 1; for (i = 2; i原创 2017-07-29 09:32:09 · 1669 阅读 · 0 评论 -
C语言实现猜数字游戏
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<time.h>void menu(){ printf("*************************\n"); printf("*****1.play 0.ex原创 2017-07-29 09:34:07 · 320 阅读 · 0 评论 -
牛客Day 5
1.在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用内联函数 2.关于C/C++的宏定义: 宏定义不检查参数正确性,会有安全隐患 宏的嵌套定义过多会影响程序的可读性,而且很容易出错 相对于函数调用,宏定义可以提高程序的运行效率 3.引用不可以是void类型 4.指针++和i++是类似的。 因为i++在计算时,会用到中间变量存储,会占用更多的内存和时原创 2017-07-23 20:29:45 · 888 阅读 · 0 评论 -
剑指Offer:将空格替换成20%
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<ctype.h> void My_Replace(char *arr) { char *start = arr;//"we are happy\0"start指向字符串原创 2017-07-29 09:41:59 · 183 阅读 · 0 评论 -
顺时针打印矩阵
#include<vector>class Solution {public: //打印一圈:只要是打印一圈数据,那么左上角的x和y下标肯定会相等。 void PrintMatrixInCircle(vector<vector<int>>& matrix,vector<int>& res,int start) { int rows = matrix原创 2017-09-06 19:41:32 · 164 阅读 · 0 评论 -
求一组成对出现的数据中的单身狗
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> int find_diff(int *arr,int sz) { int i = 0; int j = 0; for(i=0; i<s原创 2017-09-09 19:35:44 · 231 阅读 · 0 评论 -
将字符串逆置(不改变里面单词的顺序)
将student a am i”转换为“i am a student”#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> #include<ctype.h> void reverse(char *begin, c原创 2017-09-09 19:37:29 · 565 阅读 · 0 评论 -
字符串的左旋问题解析
实现一个函数,可以左旋字符串中的k个字符。 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 思路:先将一个字符串左移一位,可以使用一层for循环来实现, 然后每次都可以调用这层循环,调用移位的次数,还有就是, 循环次数如果大于字符串的长度,会重复执行一些无用的 操作,所以给step模上字符串的长度,就可以产生一个小于 字符串长度的数字。#in原创 2017-09-09 19:39:06 · 251 阅读 · 0 评论 -
对n个数字右移k位
<span style="font-size:14px;">#include<iostream> using namespace std; #include<math.h> #include<string.h> void Reverse(char* a, int left, int right) { for (; left < right; left++, right原创 2017-09-10 20:35:10 · 328 阅读 · 0 评论 -
判断一个数是否在一个二维数组中
分析参考网络#include<iostream> using namespace std; #include<assert.h> const int M = 3; const int N = 3; bool Find(const int *a, int x, int y,int &key) { assert(a); while (x < M&&x >=原创 2017-09-10 21:07:23 · 1629 阅读 · 0 评论 -
编写代码实现,模拟用户登录情景,并且只能登录三次,只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序。
C语言实现:#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char password[] = "123456"; char input[10] = {0}; int i = 0; for (i = 0; i <原创 2017-07-29 09:24:14 · 2433 阅读 · 0 评论 -
输入n,求斐波那契数列第n项。斐波那契数列的第0项为0,第一项为1,之后的项依次为前两项之和。
思路一: 递归 要求第n项,首先就要求出第n-1,n-2项,依次类推。递归的出口就是第0项为0,第1项为1.使用递归虽然代码很简单,但如果n大一点的话,所产生的运行时开销会非常大,这样做的后果就是效率非常低下。思路二: 非递归 使用非递归的话,效率会很高。设置两个三个变量分别表示当前值和前两项的值,使用循环求解。(本例中,只使用两个变量表示这些值)#include<stdio.h原创 2017-08-06 10:35:23 · 11148 阅读 · 0 评论 -
牛客day1
1.关于不同类型数据计算: 自动转换为最高的,如果int与float或double 型数据进行运算,先把int和float数据转换为double型,然后进行运算,结果是double型。 2.抽象类不能初始化,不能当做返回值,不能当做参数,可以作为指针变量,因为此时还没有初始化。 纯虚函数是在基类声明的虚函数,它在基类中没有定义,但是要求派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是原创 2017-06-02 22:19:12 · 289 阅读 · 0 评论 -
牛客day 2
1.关于构造函数: 构造函数必须与类名相同; 2.函数参数使用的空间是在栈中申请的,malloc和new是在堆中申请空间的 3.引用和多态的关系: 引用可以作为产生多态效果的手段。 4.通过一个对象调用虚函数时,C++系统对该调用采用动态联编 5.关于vector和list的区别: vector拥有一段连续的内存空间,因此支持随机存取,如果需要干笑的随即存取; vector::i原创 2017-06-10 11:32:46 · 518 阅读 · 0 评论 -
牛客day3
1.保护成员和私有成员的区别在于把保护成员的访问范围扩展到派生类中。 2.关于内存泄漏 3.关于C语言指针: 非法指针是指该指针的值不是一个已经分配的内存地址。 当使用free释放掉一个指针内容后,指针变量的值被置为NULL 4.拷贝构造函数使用引用作为参数初始化创建中的对象。 5.凡是函数中未指定存储类别的局部变量,其隐含的存储类别是自动auto 6.循环语句 只能在循环体内和sw原创 2017-06-12 08:16:08 · 681 阅读 · 0 评论 -
哈弗曼树的路径问题
下列选项给出的从根分别到两个叶子结点路径上的权值序列,能属于同一棵哈夫曼树的是:D. A.24,10,5 和24,10,7 B. 24,10,5和24,12,7 C. 24,10,10和24,14,11 D.24,10,5和24,14,6 分析: 1.根据两个叶子和访问到叶子的前一个结点,这个结点一定是叶子的父亲结点; 2.哈夫曼树的结点一定有兄弟,原创 2017-07-09 07:51:01 · 1310 阅读 · 1 评论 -
KMP算法
字符串中的KMP算法实现了子串定位运算,该算法利用匹配失败后的信息尽量减少模式串与主串的匹配次数以达到快速匹配的目的。原创 2017-07-09 08:02:52 · 161 阅读 · 0 评论 -
森林的遍历
森林是树的集合,由此可以对森林中的每一棵树依次从左到右(如右图所示)进行先根遍历或者后根遍历。又森林中的(第一棵树的根)、(第一棵树的子树森林)及(其余树构成的森林),分别对应为(二叉树的根)、(二叉树的左子树)和(二叉树的右子树)。由此可如下定义森林的这两种遍历。一、先序遍历森林 若森林不空,则可依下列次序进行遍历 (1) 访问森林中第一棵树的根结点; (2) 先序遍历第一棵树中的子树森林原创 2017-07-09 12:55:56 · 4272 阅读 · 0 评论 -
Linux-1
1.如果系统的umask设置为244,创建一个新文件后,它的权限:(-r—w–w-) umask是从权限中“拿走”相应的位,且文件创建时不能赋予执行权限. 创建时,文件 默认666,目录默认777,减去umask的位就是结果。 umask 功能说明:指定在建立文件时预设的权限掩码。 语 法:umask [-S][权限掩码] 补充说明:umask可用来设定[权限掩码]。[权限掩码]是由原创 2017-07-30 17:54:43 · 3835 阅读 · 1 评论 -
树中相关计算
1.在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶节点个数是(82) 分析:除了根节点之外,树的每个节点都有唯一的一个入度,因此计算出共有多少个出度,再加1就是树中总的节点数目。也就是20*4+10*3+1*2+10*1+1=123个 而四叉树里节点就5类,有4个孩子的,有3个孩子的,有2个孩子的,有1个孩子的,没有孩子的,现原创 2017-07-10 08:33:54 · 2855 阅读 · 0 评论 -
牛客Day4
djlkjllkjkl123455djisjioui xcxckhsfhsff原创 2017-07-19 13:43:11 · 358 阅读 · 0 评论 -
在字符串中查找第一个只出现一次的字符,例如:输入"abbbacfes",则输出'c'.
char check(char const *src) { assert(src); char const *psrc = src; int dst[256] = { 0 }; while (*psrc) { dst[*psrc++]++; //将字符串中各个字符出现的次数统计出来原创 2017-08-06 10:30:58 · 374 阅读 · 0 评论 -
一个数组中只有两个数字单独出现,其余数字都是成对出现的,请找出这两个数。
排序:#include<stdio.h> #include<stdlib.h> int check(int arr[], int len) //将arr[]中的数组进行异或,然后将结果返回 { int num = 0; for (int i = 0; i < len; i++) {原创 2017-08-06 10:33:05 · 785 阅读 · 0 评论 -
调整一组数据使得奇数位 位于偶数位的前面
#define _CRT_SECURE_NO_DEPRECATE #include<iostream> using namespace std; //判断时候为偶数 bool IsEven(int num) { if (num % 2 == 0) { return true; } return false;原创 2017-09-10 21:11:44 · 304 阅读 · 0 评论