自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liuqing0517的博客

积跬步 至千里 加油 菜鸟刘

  • 博客(116)
  • 收藏
  • 关注

原创 多线程之知识点

多线程的学习:1.++  --都不是原子操作,在多线程中值可能被改变因此在多线程环境中对一个变量进行读写时,我们需要有一种方法能够保证对一个值的递增操作是原子操作——即不可打断性,一个线程在执行原子操作时,其它线程必须等待它完成之后才能开始执行该原子操作。这种涉及到硬件的操作会不会很复杂了,幸运的是,Windows系统为我们提供了一些以Interlocked开头的函数来完成这一任务(下文将

2015-06-27 20:31:41 488

原创 多线程之CreateThread与_beginthreadex的区别

本人来源于大神的博客http://blog.csdn.net/morewindows/article/details/7421759将主要的内容提炼:CreateThread()函数是Windows提供的API接口,在C/C++语言另有一个创建线程的函数_beginthreadex(),在很多书上(包括《Windows核心编程》)提到过尽量使用_beginthreadex()来

2015-06-26 10:08:17 436

原创 编程之美 3.11二分查找系列

题目1:找出一个有序字符串数组arr中值等于字符串v的元素的序号,如果有多个元素满足这个条件,返回序号最大的这里和最基本的二分查找不一样的地方,二分查找,找到一个就可以返回,这里找到了还得继续往后走,找最大的int bisearch(char** arr,int b, int e, char* v){ int minindex = b,maxindex = e,midindex

2015-06-22 11:39:06 540

原创 编程之美 3.3计算字符串的相似度

题目:许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:1.修改一个字符(如把“a”替换为“b”);2.增加一个字符(如把“abdd”变为“aebdd”);3.删除一个字符(如把“travelling”变为“traveling”);比如,对于“abcdefg”和“abcdef”两个字符

2015-06-22 08:52:01 583

原创 编程之美 3.1字符串移位包含的问题

题目:给定两个字符串s1和s2,要求判定s2是否能偶被s1做循环移位得到的字符串包含,例如:给定s1=AABCD s2=CDAA,返回true;给定s1=ABCD 和s2=ACBD,返回false法一:将s1依次移动1位,2位....s1.length()位 判断s2在不在里面,都不在返回falsebool IsSubAfterRotate(char* s1, const char

2015-06-21 19:58:36 442

转载 编程之美 2.20程序理解和时间分析

本文转载自http://blog.csdn.net/wens07/article/details/6721323,谢谢大神题目如下:阅读以下C#代码,回答问题:using System;using System.Collections.Generic;using System.Text; namespace FindTheNumber{ class Prog

2015-06-21 19:45:00 449

原创 微软100题(100)智力题2

1.12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?(注意此题并未说明那个球的重量是轻是重,所以需要仔细考虑)(5分钟-1小时) 2.在9个点上画10条直线,要求每条直线上至少有三个点?(3分钟-20分钟) 3.在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?(5分钟-15分钟)

2015-06-17 17:55:15 533

原创 微软100题(99)智力题

1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?(5秒-1分钟) 3.如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?

2015-06-17 17:53:39 747

原创 微软100题(98)malloc实现

第2组微软面试题1.给出一个函数来输出一个字符串的所有排列。2.请编写实现malloc()内存分配函数功能一样的代码。3.给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。 4.怎样编写一个程序,把一个有序整数数组放到二叉树中? 5.怎样从顶部开始逐层打印二叉树结点数据?请编程。 6.怎样把一个链表掉个顺序(也就是反序,注意链表的边界条件并

2015-06-17 17:14:41 654

原创 微软100题(97)洗牌算法

97.第1组微软较简单的算法面试题1.编写反转字符串的程序,要求优化速度、优化空间。 2.在链表里如何发现循环链接?3.编写反转字符串的程序,要求优化速度、优化空间。4.给出洗牌的一个算法,并将洗好的牌存储在一个整形数组里。 5.写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者:怎样只用4行代码编写出一个从字符串到长整形的函数?)1、一前一后 不断交换

2015-06-17 16:25:29 477

原创 微软100题(96)strcpy的实现

编写strcpy 函数已知strcpy 函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请1、编写函数 strcpy2、解释为什么要返回char *1、strcpy的实现代码:char * st

2015-06-17 16:07:25 490

原创 微软100题(95)递归判断数组是不是升序

1 判断一字符串是不是对称的,如:abccba2.用递归的方法判断整数组a[N]是不是升序排列1解答:bool IsSymmetryStr(char* str){ char* pre = str; char* post = str + strlen(str) - 1; while (pre < post) { if(*pre != *post) return

2015-06-17 16:06:28 806

原创 微软100题(94)找出数组中长度最长的等差数列

题目:求随机数构成的数组中找到长度大于=3的最长的等差数列输出等差数列由小到大: 如果没有符合条件的就输出格式:输入[1,3,0,5,-1,6]输出[-1,1,3,5]思路:首先对数组元素进行排序,取两个元素,便知道方差,依次加上2*diff 3*diff直到没在整个数组里面为止,便得到一个长度,不断更新这个长度 取得两个元素a[0]  第二个a[1].。。。a

2015-06-17 14:41:57 1701

原创 微软100题(93)找出数组中比左边的大比右边的小的元素

在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数思路:如果一个元素师左边最大的,又是右边最小的,那么就是要找的元素,所以一开始求出所有的右边最小数组rightmin,然后从左往右判断截止当前元素最大的是,如果和对应的rightemin数组中一样,就找到了这样的元素void ThePivotElements(int data[],int len)

2015-06-17 14:40:51 4692 2

原创 微软100题(92)捣乱分子(即逆序对的题目)

1.多人排成一个队列,我们认为从低到高是正确的序列,但是总有部分人不遵守秩序。如果说,前面的人比后面的人高(两人身高一样认为是合适的),那么我们就认为这两个人是一对“捣乱分子”,比如说,现在存在一个序列:176, 178, 180, 170, 171这些捣乱分子对为, , , , , , 那么,现在给出一个整型序列,请找出这些捣乱分子对的个数(仅给出捣乱分子对的数目即可,不

2015-06-17 14:33:34 835

原创 微软100题(91)智力题

1.一道著名的毒酒问题有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用小老鼠做实验,要在1周内找出那桶毒酒,问最少需要多少老鼠。2.有趣的石头问题有一堆1万个石头和1万个木头,对于每个石头都有1个木头和它重量一样,把配对的石头和木头找出来。1.给老鼠编上序号1 2。。  桶转换为二进制,1——000 000 000 1 老鼠1号喝

2015-06-16 19:56:51 816

原创 微软100题(90)字符串处理

1.不开辟用于交换数据的临时空间,如何完成字符串的逆序(在技术一轮面试中,有些面试官会这样问)。2.删除串中指定的字符(做此题时,千万不要开辟新空间,否则面试官可能认为你不适合做嵌入式开发)3.判断单链表中是否存在环。1.不用临时变量交换数据,应该想到用异或char * change(char *str) { for(int i=0,j=strlen(

2015-06-16 19:40:49 451

原创 微软100题(89)atoi实现

1.2005年11月15日华为软件研发笔试题。实现一单链表的逆转。2.编码实现字符串转整型的函数(实现函数atoi的功能),据说是神州数码笔试题。如将字符串 ”+123”123, ”-0123”-123, “123CS45”123, “123.45CS”123, “CS123.45”03.快速排序(东软喜欢考类似的算法填空题,又如堆排序的算法等)4.删除字符串中的数字并压缩字符串。

2015-06-16 19:15:29 425

原创 微软100题(88)字符串处理函数

编码完成下面的处理函数。函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)思路:从后往前处理,字符串的题目第一反应考虑能不能反着处理int FuncStr(char* str)

2015-06-16 19:14:21 464

原创 微软100题(87)最大连续递增数字串

1.求最大连续递增数字串(如“ads3sl456789DF3456ld345AA”中的“456789”)思路:要求是数字串,还得是连续的数字 123  345这类,245则是两个串2 和45#include "stdafx.h"#include #include using namespace std;//求最大连续递增数字串string FindMaxIncreNumb

2015-06-16 09:58:32 547

原创 微软100题(86)有序数组到二叉树

怎样编写一个程序,把一个有序整数数组放到二叉树中思路:肯定不能偏向一侧,所以根节点应该为最中间的那个元素之后再递归处理Node * array2Tree(int[] array) { return helper(array, 0, n-1);}Node * helper(int[] array, int start, int end) { if (start >

2015-06-15 22:24:06 453

原创 微软100题(85)KMP_COUNT题

1.给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。分析:记住,这种题目往往就是考你对边界的考虑情况。2.已知一个字符串,比如asderwsde,寻找其中的一个子字符串比如sde的个数,如果没有返回0,有的话返回子字符串的个数1.解答:memmove类似,如果有重叠,则考虑从后往前复制,以免覆盖导致字符丢失,还有就是考虑空等特殊情

2015-06-15 21:12:58 769

原创 微软100题(84)百度面试题_随机发生器

第4组百度面试题2010年3道百度面试题[相信,你懂其中的含金量]1.a~z包括大小写与0~9组成的N个数用最快的方式把其中重复的元素挑出来。2.已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器,使得它构造0和1的概率均为1/2;构造一个发生器,使得它构造1、2、3的概率均为1/3;...,构造一个发生器,使得它构造1、2、3、...n的概率

2015-06-15 15:39:44 627

原创 积跬步至千里——算法强化训练(9)重写标准库函数

strstrstrchrstrcpymemmovememcpystrcatatoi

2015-06-15 15:38:49 513

原创 微软100题(83)百度面试题_memmove实现

第3组百度面试题1.今年百度的一道题目百度笔试:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。要求:空间复杂度O(1),时间复杂度为O(n)。2.百度笔试题用C语言实现函数void * memmove(void *dest, const void *src, size_t n)。memmove函数的功能是拷贝src所指的内存内容前n个字节到dest所指

2015-06-15 15:37:09 668

原创 微软100题(82)百度面试题_url访问频度排序

第2组百度面试题1.给出两个集合A和B,其中集合A={name},集合B={age、sex、scholarship、address、...},要求:问题1、根据集合A中的name查询出集合B中对应的属性信息;问题2、根据集合B中的属性信息(单个属性,如age2.给出一个文件,里面包含两个字段{url、size},即url为网址,size为对应网址访问的次数,要求:

2015-06-15 14:56:20 687

原创 微软100题(81)百度面试题_大数据处理

第1组百度面试题1.一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。2.一个文件,内含一千万行字符串,每个字符串在1K以内,要求找出所有相反的串对,如abc和cba。3.STL的set用什么实现的?为什么不用hash?1解答:

2015-06-15 11:25:00 930

原创 微软100题(80)高矮排序的排列方式

问题描述:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?思路:又是一道卡特兰数的题目参见http://blog.csdn.net/hackbuteer1/article/details/7450250程序和括号匹配的题目很像12个人按照高矮序号1 2 3 4 5 6 7 8 9 10 11 120代

2015-06-15 10:21:22 1124

原创 微软100题(79)strstr函数的实现

1.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?2.编写实现数组排序的一种算法。说明为什么你会选择用这样的方法?3.请编写能直接实现strstr()函数功能的代码。1.解答:

2015-06-11 10:43:16 738

原创 微软100题(78)链表和数组的区别

链表和数组的区别在哪里(链表、数组)?分析:主要在基本概念上的理解。二者都属于一种数据结构从逻辑结构来看1. 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。2. 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入

2015-06-11 10:37:07 304

原创 微软100题(77)链表的题目

.关于链表问题的面试题目如下(链表):1.给定单链表,检测是否有环。 使用两个指针p1,p2从链表头开始遍历,p1每次前进一步,p2每次前进两步。如果p2到达链表尾部,说明无环,否则p1、p2必然会在某个时刻相遇(p1==p2),从而检测到链表中有环。 2.给定两个单链表(head1, head2),检测两个链表是否有交点,如果有返回第一个交点。        如果head

2015-06-11 10:35:24 528

原创 微软100题(76)复杂链表的复制

复杂链表的复制(链表、算法)题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下: struct ComplexNode{    int m_nValue;    ComplexNode* m_pNext;    ComplexNode* m_pSibling;

2015-06-11 10:25:17 366

原创 微软100题(75)二叉树最低公共父节点

二叉树两个结点的最低共同父结点(树)题目:二叉树的结点定义如下:struct TreeNode{    int m_nvalue;    TreeNode* m_pLeft;    TreeNode* m_pRight;};输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。分析:求数中两个结点的最低共同结点是面试中经常出现的一个问题。这个问题至少有两

2015-06-10 20:52:11 363

原创 微软100题(74)数组中超过长度一半的数字

题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。分析:这是一道广为流传的面试题,包括百度、微软和Google在内的多家公司都曾经采用过这个题目。要几十分钟的时间里很好地解答这道题,除了较好的编程能力之外,还需要较快的反应和较强的逻辑思维能力。思路:遍历数组时候保存两个值,一个是数组中的数字,一个是次数。当遍历到下一个数字时候,如果和保存的数字相同,次数加

2015-06-10 20:45:16 490

原创 微软100题(73)对称字符串的最大长度

对称字符串的最大长度(字符串)。题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。思路:将题目转化为,求原串和反转串的最长连续子串的长度int LongCommonSubstr(string s1, string s2){ int m = s1.length();

2015-06-10 15:17:46 521

原创 微软100题(72)单例模式

题目:设计一个类,我们只能生成该类的一个实例。分析:只能生成一个实例的类是实现了Singleton模式的类型。单例模式[cpp] view plaincopyclass Singleton  {  private:      Singleton(){};      static Singleton*

2015-06-10 15:16:08 428

原创 微软100题(71)数值的整数次方

数值的整数次方(数字、运算)。题目:实现函数double Power(double base, int exponent),求base的exponent次方。不需要考虑溢出。

2015-06-10 14:57:36 411

原创 微软100题(70)字符串的全排列

给出一个函数来输出一个字符串的所有排列思路:递归确定一位后,不断和后面的交换void Permutation(char* element,int start,int end){ if(start==end) { for (int i=0;i<=end;++i) cout<<*(element+i); cout<<endl; } else { for (

2015-06-10 10:40:26 389

原创 微软100题(69)旋转数组中的最小元素(数组、算法)

旋转数组中的最小元素(数组、算法)。题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。思路:数组被分成两段有序的,找到分界线就好,可以用二分法找分界线int FindMinInOrder(int*

2015-06-10 10:15:34 626

原创 微软100题(68)把数组排成最小的数

题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32,  321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。思路:参见《剑指offer》,需要定义一种判断两个串大小的比较方式            "123""32"   和 "32""123" 前者小于后者,对应"123" ch

2015-06-10 09:48:34 494

空空如也

空空如也

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

TA关注的人

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