C++
nyistkk
这个作者很懒,什么都没留下…
展开
-
C++ strlen()函数的实现
函数原型 size_t strlen(const char *str) 注:在这里事先说明一下size_t 类型,他不是内置类型,但是和平台无关,是个无符号的unsigned int 类型,取值范围是0-MAXINT; 代码如下: size_t strlen(const char *str) { size_t len=0; arrert(str!=NULL)原创 2013-07-14 16:52:45 · 3266 阅读 · 0 评论 -
一道淘汰85%面试者的百度开发者面试题
题目信息:依序遍历0到100闭区间内所有的正整数,如果该数字能被3整除,则输出该数字及‘*’标记;如果该数字能被5整除,则输出该数字及‘#’标记;如果该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。原创 2014-05-15 09:41:20 · 600 阅读 · 0 评论 -
给你一个日字型数字的单边所需的*个数, 然后给你一串数字,求此数字需要多少*
描述: 这两列数字,类似于电子表的“日”字形表示,每边分别需要用3、4个“*”表示,给你一个数字字符串,在单边需要m个“*”表示的情况下,这个数字需要多少“*”呢? 程序输入字符串和m 将结果输出即可 例如,输入473,答案为16 输入6934,答案为52 解题要点:日字型 具有对称性,找出横边与竖边的关系,即可容易得出 #include #原创 2013-11-11 22:43:23 · 1013 阅读 · 0 评论 -
二进制的运算
二进制的运算 1,二进制的三种编码方式:原码,反码,补码 对于正数的原码,反码,补码都相同,而负数的则不然。二进制正负数的表示方式,以一个字节为例:最高位为0表示正,最高位为1表示负数 负数的反码:符号位不变,其余0变1,1变0;补码就是在反码基础上加一 2,五种运算:&(与),|(或),^(异或),~(取反),左移,右移; &:都为1,结果才为1; |:有一个原创 2013-08-18 13:03:31 · 646 阅读 · 0 评论 -
读书笔记-一个数中1的个数
一个数二进制中一的个数 解:对一个二进制数,如果减去1,那么这个二进制数从右向左遍历,第一个出现1的位置到最右边所有的值都会变,也就是1变0,0变1,或者说按位取反,这样我们做这样的操作:n&(n-1),那么得到的结果正好与n相比,从右到左第一个1变成0,这样重复做这样的操作,知道n=0;就能得到1的个数 int number_1(int m){ int temp=0;原创 2013-08-18 16:27:44 · 536 阅读 · 0 评论 -
读书笔记-剑指offer面试题4
剑指offer面试题4:一个字符串中的空格 替换为%20 一般解法:如果一个一个的遍历,碰到空格就把它换为%20,那么后面的所有元素都要移动两个位的距离,时间复杂度O(N2) O(n) 解法:遍历一遍字符串,得出空格的个数,这样 就得到替换后的新的字符串长度NewLength。那么首先我们准备两个指针,第一个p1指向字符串的末尾,另一个p2指向被替换后的字符串的末尾,这样p1,p2原创 2013-08-15 18:15:39 · 685 阅读 · 0 评论 -
读书笔记-剑指offer 面试题3
题目描述:在一个二维数组中,每行从左到右都是升序排列,每列从上到下也是升序排列,从一个二维数组中查找一个数是否存在 一般方法:遍历,这样最坏情况也要o(n)的时间 优化方法:假如要查找的数为a 由于每行和每列都是升序的,那么我们先从右上角开始找, 1,如果a等于右上角的这个数,则查找成功; 2,如果小于,则列数减一,或者把当前列删去,然后继续1 3,如果大于,则行数加一,或原创 2013-08-15 16:49:26 · 657 阅读 · 0 评论 -
读书笔记-让你不再害怕指针
指针:在它的地址内存里存放的是某个地址 指针的类型: 在声明语句中去点指针变量名就是指针的类型 int *p //指针的类型为int * char **p//指针的类型为char ** int *p[]//指向数组的指针 类型为 int *[] int (*p)[] //元素为指针的数组,类型 int (*)[] 指针指向的类型:在声明语句中去掉指针变量名及他左端的*原创 2013-08-15 10:30:38 · 556 阅读 · 0 评论 -
二叉查找树
二叉查找树分析与实现 二叉查找树有一下几个特点: 1,左孩子总是小于其父亲节点,右孩子总是大于其父亲节点 2,每颗子树都是一棵二叉查找树 3,通过中序遍历二叉树可以得到一个有序序列 作用:可以用来排序,可以在平均O(lgn)的时间的进行数据的快速查找,二叉查找数具有不稳定性,在建树的时候,有可能这个二叉树只有左子树或右子树,这样这颗二叉树就演化成了一个线性表了,那么他的查找时间复原创 2013-08-10 16:39:17 · 667 阅读 · 0 评论 -
二叉树的创建与各种遍历详解
二叉树大部分高级数据结构的基础,对这种基础的数据结构要达到非常熟练顺手拈来的程度才能对问题有更深一步的理解,今天为了巩固树这一部分,把二叉树的基本操作,建树,各种递归、非递归遍历,求叶子节点个数都做了详细的理解,以达到熟练的程度。 1,二叉树的结构定义: typedef struct LNode { int data; //节点的值 LNode *Left; //指向做孩原创 2013-07-27 11:15:00 · 1040 阅读 · 0 评论 -
Sampling 蓄水池抽样算法
昨天面试,面试官问了我一道这样的题,没有回答出来,现在来总结一下。 Sampling 蓄水池抽样 主要是用来解决等概率选取问题,如果给你一个数组的数据,但是不知道的他的长度,而且每个数据只能访问一次,也就是说你没法通过遍历得到他的长度,也就不能用rand随机获取数据了,这样我们就要用到Sampling算法了 我总共总结了两个问题:1,从一组未知长度的数据里面随机等概率选取一个数?原创 2013-07-20 10:57:49 · 802 阅读 · 0 评论 -
C++ strcpy 函数的实现
//不用多讲,直接代码,其中有几个需要注意的地方 1,返回值类型为 char*类型,是为了能链式使用拷贝后的值 2,一定要主要 拷贝的结束符也是靠识别'\0'来结束的,别忘了最后一位要赋值为'\0' 3,被复制的参数定义为const的类型,防止拷贝过程中发生改变 char *strcpy_def(char *strDest,const char *strSrc) { as原创 2013-07-14 16:44:19 · 681 阅读 · 0 评论 -
斐波那契数列的递归优化实现
斐波那契数列,传统裴波那契数列的递归求法,需要重复计算很多次,这里我们用一个小技巧,只需计算一次即可 代码如下: #include #include using namespace std; int fun(int a,int b,int n) { return (n<=1?b:fun(a+b,a,n-1)); } int main() { int n;原创 2013-07-16 10:20:07 · 1279 阅读 · 0 评论 -
打表法求素数距离
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=24 #include #include #include using namespace std; const int MAX = 1000010; //打印素数表 void PrimeTable(int end, int *prime){ prime[1] =原创 2013-10-27 09:42:59 · 617 阅读 · 0 评论