自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

转载 经典面试题(一)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯

1. 有一个整数数组,请求出两两之差绝对值最小的值。记住,只要得出最小值即可,不需要求出是哪两个数。(Microsoft) 方法1:两两作差求绝对值,并取最小,O( n2 )。方法2:排序,相邻两点作差求绝对值,并取最小,O( nlgn ).方法3:有没有O( n )的解法?网上有如下解法:设数组A = { a1, a2, … , an }, 求 s = min( |ai -

2015-04-22 19:48:36 888

转载 经典面试题(二)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯

1.正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12(1)、设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项(2)、设计测试数据来验证函数程序在各种输入下的正确性。 感觉有点类似归并排序的Merge。有两个数组A、

2015-04-22 19:39:45 677

转载 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯

1.判断单链表是否有环,要求空间尽量少(2011年MTK)如何找出环的连接点在哪里?如何知道环的长度? 很经典的题目。1.判断是否有环。使用两个指针。一个每次前进1,另一个每次前进2,且都从链表第一个元素开始。显然,如果有环,两个指针必然会相遇。2.环的长度。记下第一次的相遇点,这个指针再次从相遇点出发,直到第二次相遇。此时,步长为1的指针所走的步数恰好就是环的长度。3.环的链接点。

2015-04-22 19:37:25 950

转载 经典面试题(四)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯

1金币概率问题(威盛笔试题)题目:个房间里放着随机数量的金币。每个房间只能进入一次,并只能在一个房间中拿金币。一个人采取如下策略:前四个房间只看不拿。随后的房间只要看到比前四个房间都多的金币数,就拿。否则就拿最后一个房间的金币。编程计算这种策略拿到最多金币的概率。 这题真要用数学的方法计算,估计还真不好算。还好,题目要求用编程实现。这样它就成了一个模拟题,即用程序来模拟整个取

2015-04-22 19:33:16 458

转载 程序员面试常见面试题深入剖析

void test1() {  char string[10];  char* str1 = "0123456789";  strcpy( string, str1 ); }   试题2:[cpp] view plaincopyvoid test2() {  char string[10], str1[10];  int i;  for(i=0;

2015-04-22 18:54:26 365

原创 strpbrk和strcspn这两个函数的区别

strpbrk和strcspn这两个函数功能相似,区别在于前者返回的是一个指针,而后而返回的是一个数组下标值,或者可以前者为绝对值,而后者为偏移量,为一相对值,下面分别举两个简单的例子来显示它们的作用和区别:// strpbrk示例:#include #include int main() { char* str1 = "Hello, world"; char* str2

2015-04-22 17:38:31 874

原创 动态内存空间的开辟与释放

在不知道需要占用内存空间大小时,需要在堆栈上动态开辟内存空间,空间使用结束后需要程序员自己释放。#include #include void main(){ int n,*p,i,j,m,temp; printf("本程序可对任意个整数排序;\n"); printf("请输入整数的总个数: "); scanf("%d",&n); p=(int *)calloc(n,sizeof

2015-04-22 16:36:16 2289

原创 C++中用new开辟内存空间和非new开辟内存空间的区别

#include using namespace std;class A{private: int n;public: A(int m):n(m) { } ~A(){}};int main(){ A a(1); //栈中分配 A b = A(1); //栈中分配 A* c = new A(1); //堆中分配

2015-04-22 15:43:47 10440

转载 求一个字符串中连续出现并且出现次数最多的子串.

求一个字符串中连续出现次数最多的子串. 基本算法描述: 给出一个字符串abababa 1.穷举出所有的后缀子串 substrs[0] = abababa; substrs[1] = bababa; substrs[2] = ababa; substrs[3] = baba; su

2015-04-22 11:00:51 1206

原创 C++中怎么求类的大小?以及内存对齐原理(面试官经常问到的问题)

#includeusing namespace std;int main(){class S{};cout<<sizeof(S);return 0;}程序居然输出为1!到底是怎么回事?首先我在这里要声明一点——类在未初始化之前确实不会分配空间,这里探讨的是sizeof(类)的问题,详细情况看下面的例子C++中的类所占内存空间总结 类所占内存的大小是由成员

2015-04-22 10:51:49 2341

原创 C做题笔记(一)

#includeint main(){ int i=10; while(i--); printf("%d\n",i); return 0;}结果i=-1,虽然最后i=0但是i--作为判断条件仍然要执行,因此i=-1而不是0.#includeint main(){ int x=4,y=0,z=0; if(x=y+z) printf("

2015-04-19 17:51:45 732

原创 C语言常考基本问题

C语言基本问题1. 结构化编码:if else while等等控制结构的使用。模块化设计:划分为若干子模块例如函数这种功能。2. 解决问题的方法和步骤称为算法。好算法的要求:正确性,健壮性,可读性,效率和低存储率。3. 算法的特点:有穷性,确定性,有零个或多个输入,有一个或多个输出,有效性。4. 三种基

2015-04-19 14:37:17 907

转载 迭代算法

迭代算法是用计算机处理问题的一种基本方法。它利用计算机运算速度快、适合做重复性操做的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。  利用迭代算法处理问题,需要做好以下三个方面的工做:  一、确定迭代变量。在能够用迭代算法处理的问题中,至少具有一个间接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。  二、建

2015-04-15 22:51:41 2827

原创 关于vi的简单操作

基本操作1) 插入文本;2)修改文本;3)删除文本;vi & vim 有编译模式与命令模式,下述光标移动操作均为命令模式下操作; 下文中以 ^ 符表示 Ctrl 键被按下,如 ^F 标示 Ctrl 与 F 键被同时按下; 下文中以 + 号表示按下某键后再按另外按键,如 z + Enter 表示先按下 z 键,再按下 Enter 键;1, 插入文本: (命令

2015-04-15 13:24:06 583

原创 当父类指针指向子类对象时的函数调用

class A{public: void FuncA() { printf( "FuncA called\n" ); } virtual void FuncB() { printf( "FuncB called\n" ); }};class B : public A{public: void FuncA() { A::FuncA();

2015-04-14 16:37:05 7301

原创 C++中继承会破坏封装吗?

类继承是在编译时刻静态定义的,且可直接使用,类继承可以较方便地改变父类的实现。但是类继承也有一些不足之处。首先,因为继承在编译时刻就定义了,所以无法在运行时刻改变从父类继承的实现。更糟的是,父类通常至少定义了子类的部分行为,父类的任何改变都可能影响子类的行为。如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。 第一个例子,我

2015-04-14 16:15:49 1348

原创 求一个数组中和最小的连续子数组

#include#define MAX_LENGTH 10int main(){ int a[MAX_LENGTH]={1,2,3,-2,4,-6,-8,5,3,1}; int i,j,beg,end,tmp,min=0x7fffffff; //beg和end分别为子数组中首末元素下标,min为无穷大的数 beg=end=tmp=0; for(i=0;

2015-04-12 01:18:52 2847

转载 用二叉树区分DFS和BFS

二叉树概念和性质二叉树是每个节点最多有两个子树的树结构,常被用于实现二叉查找树和二叉堆。在图论中,二叉树定义是一个连通的无环图,并且每一个顶点的度不大于2。二叉树和树有很多相似之处,但并不是树的特殊情形,主要有以下三点主要差别:1.树中结点的最大度数没有限制,而二叉树结点的最大度数为2;2.树的结点无左、右之分,而二叉树的结点有左、右之分;3.树的结点个数至少为1,而二叉树的结点个

2015-04-11 12:38:21 492

转载 C语言面试题

1.理解main函数的参数,运行一下看看结果#include int main(int argc, char* argv[], char *envp[]){int i = 0;// walk through all the arguments// way 1:// for (i=0; i<argc; i++)// {// printf("argv[%d]=%s\n", i,

2015-04-10 21:44:58 1205

转载 面试宝典:(C语言面试题)总汇

4. static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域#此前在首页部分显示#7. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。2) 不存在指向空值的引用,但是存在指向空值的指针。8. 描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性9.

2015-04-10 21:36:15 799

原创 用C语言实现单链表的各种操作

#include#includestruct LinkList{ int data; struct LinkList *next;};/*初始化链表*/void init_list(LinkList **head) { *head=(LinkList *)malloc(sizeof(LinkList)); (*head)->next=N

2015-04-10 20:21:19 894

原创 统计一个字符串中某个字符第一次出现的位置和最后一次出现的位置

#include#include#include//统计某个字符第一次出现的位置char* strchr(char *p,char a) { int i; assert(p!=NULL); for(i=0;i<strlen(p);i++) { if(p[i]==a) return p+i; } return 0;}//统计某个

2015-04-09 20:28:10 5063

原创 对磁盘文件的简单读写操作

#include #includeint main() { int i,ch; char str[100]; FILE *fp; fp=fopen("text","w"); //创建一个文件 while(1) { printf("input string:\n"); gets(str); fprintf(fp,"

2015-04-09 12:44:30 1021

原创 用读写文件方式实现通讯录

#include#include#include#define SEEK_SETstruct person{ char name[10]; char sex[4]; int age; char tel[11]; char addr[20];};char filename[20];FILE * fp;void add();void show();void insert

2015-04-09 11:16:04 849

转载 C/C++文件输入与输出

C语言:一 打开关闭文件1 fopen函数 用于打开文件FILE *fopen(char *filename, *type);fopen("c:\\ccdos\\clib", "rb"); 如果成功的打开一个文件, fopen()函数返回文件指针,否则返回空指针(NULL)。由此可判断文件打开是否成功。"r" 打开文字文件只读 "w" 创建文字文件只写

2015-04-09 10:52:26 1481

原创 顺序表的实现(C语言)

#include#include#define MAXSIZE 100struct List{ int element[MAXSIZE]; //链表中最大节点数 int len; //当前链表的长度}*t;void print(List *t);int Isemtty(List *t) //判断链表是否为空{ if(t->len==

2015-04-09 08:29:36 5634 1

转载 遇到sizeof(struct)怎么计算?

1、 sizeof应用在结构上的情况请看下面的结构:struct MyStruct{ double dda1; char dda; int type;};对结构MyStruct采用sizeof会出现什么结果呢?sizeof(MyStruct)为多少呢?也许你会这样求:sizeof(MyStruct)=sizeof(double) sizeof(char)

2015-04-08 10:26:31 1286

原创 实现字符串中单词反转

#include int main(){ char str[]="student a am i"; printf("%s\n",str); char *p,*q; char temp; p=q=str; while(*q!='\0') { q++; } q--;

2015-04-07 21:24:54 633

原创 用递归思想实现字符串反转

#include#includechar *reverse(char *str) { if(!*str) { return NULL; } if(strlen(str)==1) { return str; } char ctemp; int len = strlen(str); if( len

2015-04-07 17:51:18 607

原创 用递归函数求厄密多项式

#includeint hermite(int n, int x){ if(n<=0) return 1; else { if(n==1) return 2*x; else return 2*x*hermite(n-1,x)+2*(n-1)*hermite(n-2,x); }}int main(){ int n,x,ret;

2015-04-07 14:41:21 892

原创 用结构体创建静态链表

#include #include #define LEN sizeof(struct student)struct student{ char num[8]; char name[8]; char sex[2]; int age; struct student *next;} stu[10];int main(){ struct student

2015-04-05 22:18:02 514

原创 通讯录(C语言)

#include#include#include#define M 1000 // 结构体变量的大小void insert(); //增加联系人信息int delet(); //删除联系人信息void find(); //查找指定联系人信息void change(); //修改联系人信息void show(); //显示所有联系人信息

2015-04-05 21:17:55 430

原创 判断字符串是否匹配

#include#includevoid str_match(const char* str1, const char* str2){ int i,j,k=0; int len; int flag=0; puts(str1); puts(str2); len=strlen(str1); if((*str1!=NULL)&&(*str2!=NULL))

2015-04-05 13:09:02 829

原创 C++中的几个重要知识点

1.普通成员函数声明为const是防止函数修改调用该成员函数的对象的数据成员,这个对象时通过this指针隐式传递给该函数的,而静态成员函数没有this指针,所以就没有这项功能,也就不需要声明为const2.子类对象的数据成员包含继承自父类的数据成员和子类本身的数据成员两部分,所以用子类对象赋值给父类对象时初始化的父类只会存在子类对象的父类数据成员部分3.一个类的对象所占内存是由

2015-04-05 11:35:02 529

原创 用可变参数实现printf函数

#include #include void my_printf(int val, ...){ va_list arg; int i; int a=1; char b='h'; char *p="asd"; //准备访问可变参数 va_start(arg, val); char a[4]; //添加取自可变参数列表的值 fo

2015-04-05 01:00:14 475

原创 将一个数字以字符格式输出

#include#define M 10int main(){ int a; printf("please input a number:"); scanf("%d",&a); int q,j,i=0; char b[M]; while(q) { q=a/10; b[i]=(a%10)+'0'; a=q;

2015-04-04 23:56:32 1374

原创 用可变参数求平均值

#include #include float average(int val, ...){ va_list arg; //定义可变参数 int count; float sum = 0; va_start(arg, val); //准备访问可变参数 for (count = 0; count < val; count +=1)//添加取自可变参数列表的值 {

2015-04-04 21:41:43 829

原创 判断一个数是否是回文数

#includevoid judge(int n){ int q,sum=0; int ret; ret=n; //q=n/10; while(q) { q=n/10; sum=sum*10+(n%10); n=q; } if(ret==sum) { printf("是回文数\n"); } else printf("不是回文数\n");}in

2015-04-04 21:27:22 492

原创 求两个数的最大公约数和最小公倍数

#includeint main(){ int a,b,c,temp; while(1) { printf("请输入两个数:"); scanf("%d %d",&a,&b); int d; d=a*b; if(a<b) { temp=a; a=b; b=temp; } while(a%b) { c=a%b; temp=a;

2015-04-04 20:20:06 440

转载 堆排序中求前K个最小数

01.#include "iostream" 02.#include "vector" 03.#include "algorithm" 04.using namespace std; 05.void HeapAdjust(std::vector &a,int i,int size){ 06. int lchild = 2*i + 1; 07. int rchil

2015-04-03 20:55:02 666

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除