C++
叶赫那拉坤
这个作者很懒,什么都没留下…
展开
-
算法:C++实现二叉树遍历(递归、非递归)
完成二叉树创建并消除节点值相同的节点,然后分别采用前序中序后序三种方式输出结果。#include<iostream>struct Node{ int value; Node *left; Node *right; Node(int data):value(data),left(NULL),right(NULL){}};void inertNode(Node *no原创 2017-07-03 22:01:58 · 14624 阅读 · 1 评论 -
语法:C语言中printf函数的返回值
平时真不怎么关注printf的返回值,一般是直接调用printf格式化输出,今天做腾讯的笔试题发现了一个知识漏洞,特此记录。 首先,题目是这样的:int f(int a, int b, int c){ return 0;}int main(){ return f(printf("a"),printf("b"),printf("c"));}问上述程序的输出结果,自以为pri原创 2017-09-02 15:39:08 · 5782 阅读 · 2 评论 -
语法:c++对关于空指针0/NULL/nullptr三者的演变
字面意义上的解释:0:整型常量 NULL:预处理符号 nullptr:空指针类型常量其中前两者在C中出现,最后一个在C++11中出现。我们平常会使用这三个符号来表示空指针,但是他们之间还是有许多差别。NULL 声明在cstdlib中: #ifdef __cplusplus #define NULL 0 #else= #define NULL ((void *)0) #end原创 2017-09-02 09:23:40 · 2098 阅读 · 0 评论 -
语法:C++中的const变量“不变”与“变”
事出有因,附上代码:#include<iostream>int main(){ //volatile const int i=10; const int i=10; int *j=const_cast<int*>(&i); *j=2; std::cout<<&i<<" "<<j<<std::endl; std::cout<<i<<" "<<*j<<s原创 2017-08-14 19:52:04 · 940 阅读 · 0 评论 -
算法:C++中的堆排序
堆中元素的排列方式分为两种:max-heap或min-heap,前者每个节点的key都大于等于孩子节点的key,后者每个节点的key都小于等于孩子节点的key。 由于堆可以看成一个完全二叉树,可以使用连续空间的array来模拟完全二叉树,简单原始的实现如下:#include<iostream>int heapsize=0;//全局变量记录堆的大小void heapSort(int array[原创 2017-08-13 16:08:06 · 490 阅读 · 0 评论 -
语法:STL中的有关二分查找的算法
STL加入C++11标准为C++注入了新的活力,其中提出的泛型编程为C++程序带来了翻天覆地的变化,一些泛化的算法实现让编程变得简单高效。STL 中有关二分查找的算法主要有三个:lower_bound、upper_bound、binary_search。参照《STL源码分析》对三个算法做个笔记。lower_bound指向一个前闭后开区间[first,last)中大于等于指定值value的最小元素坐翻译 2017-08-20 09:59:23 · 495 阅读 · 0 评论 -
算法:C++实现二分查找
事出有因,昨晚内推笔试题,采用遍历的方式提示耗时,由于系统原因(忍不住再次吐槽一下考试系统,估计是单线程队列模式),本地测试通过但是系统提交不上去,好不容易提交上去发现没通过全部的测试用例,当考虑用二分查找方式实现时时间已耗完。题目:新兵入队,编号从1开始依次递增(10个人的话编号是1-10),共分成N个队伍,指定每个队伍中的人数并分配新兵(按照编号顺序),然后随机选取Q个测试qi(i=1-Q),指原创 2017-08-20 09:25:03 · 603 阅读 · 0 评论 -
语法:C++中的vector详解
vector是C++标准库中的类,可以理解为长度可自动调节的数组,是C++标准库中众多容器(container)中的一个,以序列的方式维护其中的变量集合,在使用vector之前需添加头文件< vector >。vector作为一种容器,具有size(),begin(), end()等方法。原创 2017-06-15 15:23:37 · 1367 阅读 · 0 评论 -
算法:C++实现动态规划中的几个典型问题
动态规划的思想在程序设计中占有相当的分量,动态规划的主要思想就是把大问题划分为小问题,通过求解小问题来逐渐解决大问题。 满足动态规划思想的问题具备两个典型特征: 最优子结构:就是说局部的最优解能够决定全局的最优解,最优解的子问题也是最优的。 子问题重叠 :就是说大问题划分为小问题时,并不是每次都是新问题,有的小问题可能已经在前面的计算中出现过。 下面介绍几个编程人员笔试常遇到的动态规划问原创 2017-07-31 18:49:27 · 4668 阅读 · 1 评论 -
算法:C++实现先递增后递减队列的最值和单调递增队列的绝对值最小的值
题目1:在一个先递增后递减的整型数组中,找出最大的数的下标;题目2:在一个单调递增的整型数组中,找出绝对值最小的数的下标;分析:乍看这两个题目似乎没有什么联系,但是仔细思考后我们可以转化为类似的一个问题,如果把题目2中的所有负数去绝度值,就变成了一个先递减后递增的整型数组中,找转载 2017-08-17 21:40:15 · 2579 阅读 · 0 评论 -
语法:C++标准库中的iomanip
iomanip在c++程序里面经常见到下面的头文件#include ,io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有效。)原创 2017-08-10 16:32:09 · 2178 阅读 · 1 评论 -
算法:C++实现BCD进制转换
BCD转化原创 2017-08-10 16:15:35 · 1079 阅读 · 0 评论 -
算法:C++实现电话号码分身
题目:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替 (”ZERO”, “ONE”, “TWO”, “THREE”, “FOUR”, “FIVE”, “SIX”, “SEVEN”, “EIGHT”, “NINE”), 然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。思路:通过这些单词我们会发现有些字母只出现在特定的单词中,例如“Z”只出现在“ZERO”这个单词中,那么原创 2017-08-09 10:45:01 · 821 阅读 · 0 评论 -
算法:C++实现O(n)复杂度内查找第K大数
题目:是在一组数组(数组元素为整数,可正可负可为0)中查找乘积最大的三个数,最后输出最大乘积。 从国题目我们知道只有两种结果存在:1)三个最大的正整数相乘;2)一个最大的正整数和两个最小的负数相乘。所以我们需要找出数组中最大的三个数的乘积m,然后与数组中最小的两个数相乘再与最大的数相乘的结果n,然后比较m,n,选出最大的数即为最终的结果。 大神无处不在,参考代码牛客网大神分享。#include原创 2017-08-02 11:06:50 · 2324 阅读 · 0 评论 -
算法:C++实现大数相乘
大数相乘,是指那些相乘结果或是乘数本身用long long类型都会溢出的数字,通常这些数字都通过string类型进行表示,借助于可动态调整大小的数据结构(vector,string,deque)模拟实现数字的乘法操作。原创 2017-08-02 08:53:32 · 10587 阅读 · 0 评论 -
C++常用知识点汇总(基础)
研究生期间做研究一直用Python,下学期面临找工作压力,这几天抽时间复习了一下C++,简单做了一下笔记,以备不时之需。函数函数模板: 只适用于函数体相同、函数的参数个数相同而类型不同的情况,如果参数的个数不同,则不能用函数模板函数重载: 参数的个数和类型可以都不相同。但不能只有函数的类型不同而参数的个数和类型相同。默认参数: 实参与形参的结合是从左至右顺序进行的。因此指定默认值的参数原创 2017-06-06 15:12:35 · 17105 阅读 · 2 评论 -
算法:C++实现快速排序&归并排序
快速排序 归并排序原创 2017-07-13 08:26:21 · 423 阅读 · 0 评论 -
一个常见的编程题(C++版)
华为历年经典笔试题解析转载 2017-08-21 18:32:45 · 1286 阅读 · 0 评论