04 2013 档案

摘要:C++中用二维数组传参时形参该怎样写 [转]二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写?要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的就是要让编译器知道函数参数的数据类型。正确的是:void Func(int array[3][10]);void Func(int array[][10]); 可以省略第一维的大小,错误的是:void Func(int array[][]).这样的用法只能在初始化时可以用;这样写也是错误:void Func(const int m,const int n,int array[m][n]);或voi 阅读全文
posted @ 2013-04-30 20:51 karlthas 阅读(216) 评论(0) 推荐(0)
摘要:上一篇博客也谈到之前和同学聊天希尔排序都忘了,今天准备复习一下常用的几种排序算法。首先是面试时比较常见的快速排序,快速排序是一种不稳定排序,快速排序的时间复杂度,在最好情况下是O(nlogn),最坏的情况下是O(n2),这是在排序序列已经有序的情况下。快速排序是基于分治法的排序,其主程序中采用了递归... 阅读全文
posted @ 2013-04-30 09:31 karlthas 阅读(342) 评论(0) 推荐(0)
摘要:给出两个单向链表的头指针,判断这两个链表是否相交,如果相交给出相交的第一个结点一、两个链表均不含有环方法一:直接法 直接判断第一个链表的每个结点是否在第二个链表中,时间复杂度为O(len1*len2),耗时很大方法二:利用计数如 果 两个链表相交,则两个链表就会有共同的结点;而结点地址又是结点唯一标识。因而判断两个链表中是否存在地址一致的节点,就可以知道是否相交了。可以对第一 个链表的节点地址进行hash排序,建立hash表,然后针对第二个链表的每个节点的地址查询hash表,如果它在hash表中出现,则说明两个链表有共 同的结点。这个方法的时间复杂度为:O(max(len1+len2);但同时 阅读全文
posted @ 2013-04-27 22:58 karlthas 阅读(294) 评论(0) 推荐(0)
摘要:打算先把手头上的资源先消化得差不多了再看新的东西吧,编程之美、编程珠玑、程序员面试100题、刀疤鸭数据结构面试题、大话数据结构、数据结构与算法分析(C++描述),JAVA核心技术卷I,C++ Primer(着重看类相关的和STL相关的,不知道时间够不够),一边学习一边进步吧,多练习coding,无论是在电脑上还是手写,都要熟悉,前几天刚复习的排序算法又忘了,和同学聊起来shell排序都忘了,基本思想倒是挺清楚= =,代码估计写的话估计磕磕绊绊吧,SDN先放一边了,但还是感觉丫是一台重轴戏,得好好得看看,虽然概念比较虚,而且呆在移动这边的确没有什么实质性的接触,论文要想出彩的确还是得花点功夫,总 阅读全文
posted @ 2013-04-27 15:27 karlthas 阅读(123) 评论(0) 推荐(0)
摘要:题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句(A?B:C)不能使用的东西囊括了基本的编程工具,先来看看能使用的方法有哪些,加减法、位移(左右移操作),1+2+。。。+n的计算公式为n*(n+1)/2n-1能得到,除以2能够用位移操作来完成,将公式拆分为n^2 + n 和除以2两部分,是不是可以用个乘方函数取巧一下?(偷笑)初步想法代码如下:1#include<iostream>2#include<math.h>34usingnamespacestd;56intcompute(intn)7 阅读全文
posted @ 2013-04-26 18:00 karlthas 阅读(359) 评论(1) 推荐(0)
摘要:比较老的一道题了,练练手,面向过程的coding1#include<iostream>23usingnamespacestd;4intmain()5{6stringstr="iamastudent.";7inti=0,j=str.length()-1;8chartemp;9while(i<j)10{11temp=str[i];12str[i]=str[j];13str[j]=temp;14i++;15j--;16}17i=0;j=0;18inttemp1,temp2;19while(j<str.length())20{21if(str[j]!= 阅读全文
posted @ 2013-04-26 16:54 karlthas 阅读(165) 评论(0) 推荐(0)
摘要:题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。看完何海涛的解答,我觉得这个题目可以抽象到一个更高的层次,与某些问题有异曲同工之妙,比如判断单链表是否有环、寻找单链表中的倒数第K个元素,包含min函数的栈等,都是定义两个变量,一个是主变量,一个是辅助变量。程序中,定义了两个变量,一个变量求连续子数组的和,另一个变量的作用是记录这整个过程中最大的那个和。需要考虑到的特殊情况是 1、异常输入,比如数组长度为0;2、数组元素全部为负数的时候,题目退化成寻找最大的元素。根据以上的信息,我们 阅读全文
posted @ 2013-04-26 10:47 karlthas 阅读(220) 评论(0) 推荐(0)
摘要:View Code 1#include<iostream>2#include<stdlib.h>3usingnamespacestd;4classRational5{6public:7Rational(intnum,intdenom);8Rationaloperator+(Rationalrhs);9Rationaloperator-(Rationalrhs);10Rationaloperator*(Rationalrhs);11Rationaloperator/(Rationalrhs);1213voidprint();1415private:1617voidnorm 阅读全文
posted @ 2013-04-24 17:08 karlthas 阅读(182) 评论(0) 推荐(0)
摘要://题目:求两个大于2的31次方的整数的乘积,都是32位整数1#include<iostream>2usingnamespacestd;3voidprint_c(stringc)4{5boolfirst0=false;6inti;7for(i=0;i<c.length();i++)8{9if(c[i]!='0')10{11first0=true;12break;13}14}15while(first0==true&&c[i]!='\0')16{17cout<<c[i];18i++;19}20}21intmain()2 阅读全文
posted @ 2013-04-24 11:03 karlthas 阅读(177) 评论(0) 推荐(0)
摘要:题目描述:A,B,C,D,E五个人捕鱼,第一天太累了回去就睡觉了,第二天早上A醒来把鱼分成5份然后扔了一条,拿走自己的一份,B同样把鱼分成五份,扔一条多余的,自己拿走自己的那份,然后C,D,E做了同样的事。求鱼共有多条?1importstaticjava.lang.System.out;23publicclassfish{45staticvoidfish_()6{7floatsum;//E拿到的鱼1条8intx=1,i;9while(true)10{11sum=x*4;12for(i=0;i<5;i++)13{14sum=(float)(sum*5.0/4.0);15if((sum-(i 阅读全文
posted @ 2013-04-23 18:21 karlthas 阅读(239) 评论(0) 推荐(0)
摘要:总结一下本书中遇到的大部分面试题。面试题3:二维数组中的查找题目:在一个二维数组中,每一行都按照从左到右的递增顺序排列,每一列都按照从上到下递增的顺序排列,请完成一个函数,输入这样的一个整数,判断数组中是否含有该整数。面试题4:替换空格题目:请实现一个函数,把字符串中的每个空格替换成%20。面试题5:从尾到头打印链表题目:输入一个链表的头结点,从尾到头反过来打印每个结点的值。面试题6:重建二叉树题目:输入某二叉树前序遍历和中序遍历的结果,请重建出该二叉树。假设节点没有重复的。面试题7:用两个栈实现队列题目描述:如题。面试题8:旋转数组的最小数字题目:把一个数组最开始的若干个元素搬到数组的末尾, 阅读全文
posted @ 2013-04-22 16:44 karlthas 阅读(294) 评论(0) 推荐(0)
摘要:题目大概描述:已知ab两个数组 a[N] b[N],b[i] = a[0] * a[1] *...a[i] *...*a[N-1] / a[i] ,不允许使用除法,以及其他辅助存储(堆什么的。。这个忘了),允许的操作是迭代器遍历a[N],b[N],根据a[N]生成b[N],要求空间复杂度是O(1),时间复杂度为O(n).代码如下:#include<iostream>#defineN 4usingnamespacestd;intmain(){inta[N]={1,2,3,4};intb[N];inti;for(i=0;i<N;i++){b[i]=a[i];if(i>0)a 阅读全文
posted @ 2013-04-20 19:54 karlthas 阅读(357) 评论(2) 推荐(0)
摘要:今天腾讯公布了北京的实习生笔试名单,很意外的没有入围,我投的是腾讯的测试开发方向(我是偏开发方向的)的实习生工作,腾讯在简历填写的时候有一个BG的选项,我选择的是TEG技术工程事业群,当时填写的时候还以为这个是和笔试的时候有关系,特意留意了一下这个群,但是今天公布实习笔试名单的时候意外的没有被选上,我推测可能的原因有如下:1、测试人员的需求小于开发人员;2、测试人员的素质要求高于开发人员。纵观整个北京的实习生笔试,从名单来看包含“测试”的搜索结果就6个,占总笔试人数的6/4604 不到1/700,一方面反映出了自己经验不够,不会选择从业方向,另外一方面也反映出来自己的实力不够打败那入选的6个, 阅读全文
posted @ 2013-04-19 16:26 karlthas 阅读(210) 评论(0) 推荐(0)
摘要:边界条件需要注意:两种方法,第一种遍历链表,寻找到节点,然后从头结点开始,寻找第n-k+1个节点;第二种方法,两个指针,第一个先走k-1步,然后第二个指针和第一个一起走,到尾节点的时候,第二个指针指向的节点就是倒数第k个节点了。在程序中两方法没按顺序写。切记 每次赋值都是赋头指针给p或者q。1#include<iostream>23usingnamespacestd;45typedefstructList6{7intdata;8structList*next;9}List;1011voidHeadCreatList(List*L)12{13List*s;14L->next=N 阅读全文
posted @ 2013-04-17 17:22 karlthas 阅读(345) 评论(0) 推荐(0)
摘要:题目描述:把n个筛子扔在地上,所有筛子朝上的一面点数之和为s,输入n,打印出s的所有可能的值出线的概率。书上给了两种解法,第一种递归的方法由于代码太乱,没有看懂=。=第二种方法很巧妙,lz已经根据书上的算法将其实现。第二种算法思路如下:考虑两个数组来存储骰子点数的每一个总数出线的次数,在一次循环中,第一个数组中的第n个数字表示骰子和为n的出现的次数,在下次循环中,我们加上一个新的骰子,此时和为n的骰子出现的次数应该等于上次循环中骰子点数为n-1,n-2,n-3,n-4,n-5,n-6次数的总和,所以我们把另一个数组的第n个数字设为前一个数对应的第n-1,n-2,n-3,n-4,n-5,n-6之 阅读全文
posted @ 2013-04-17 16:14 karlthas 阅读(425) 评论(0) 推荐(0)
摘要:问题:一个整型数组中除了两个数字之外,其他的数字都出现了两次,写出程序找出这两个只出现了一次的数字,时间复杂度要求O(n),空间复杂度要求O(1).一看到这个题想到了很多“可能”的解法,很飘散的思绪,比如什么哈希啊,什么加A再减去A,剩下的就是单独的了啊,都是写没啥用的解法。后面看到了书上的解法,觉得很巧妙,于是贴了上来,顺便标明了自己当时不是很清楚的理解。书上说这道题很难,我觉得算法这种东西,本质上并没有难一说,而是主张一个“巧妙”,九拐十八弯。从易入难,举一反三是算法学习中必不可少的一种经历。闲话少说,言归正传,首先这个题目是要求我们找出数组中的两个分别出现了一次的数字,而且时间复杂度要求 阅读全文
posted @ 2013-04-16 12:43 karlthas 阅读(339) 评论(0) 推荐(0)
摘要:今天看剑指offer的时候碰到了“丑数”这个问题,说这个“丑数”,常规的情况是,一般人碰到这个问题会感觉到无从下手,为什么呢?因为从一般人的角度来看,比如2乘以2.3.5分别为4、6、10,3乘以2.3.5的话为6、9、15,两个结果中有交叉的部分 ,接下来就想建立一个存储结构,将生成的这些丑数都保存进来,于是想,会不会有一种数据结构能够支持查找数据结构中的元素呢,在O(1)的复杂度里找到这个元素是否存在于这个数据结构里,换句话来说,我想用哈希的思想,但是又碍于空间的消耗 想走一个捷径。。于是。。百思不得其解 看了书上给的解法收到了启发,思路很简单,我们换种丑数的计算方式,不是靠“插入”这种操 阅读全文
posted @ 2013-04-15 14:50 karlthas 阅读(420) 评论(0) 推荐(0)
摘要:以下为转载:1、嵌套类(可能含有static成员变量)的构造顺序,访问方式等。如果外部类定义中声明了内部类的成员变量(非static),则先构造内部类,再构造外部类。否则只调用外部类构造函数。2、多线程条件下的互斥量,条件变量和pthread_cond_wait()pthread_cond_wait()必须与pthread_mutex配套使用。pthread_cond_wait()会在进入到wait_cond状态后自动释放mutex。3、传输层的作用提供可靠传输服务;在端系统和会话层之间;提供主机应用程序进程之间的端到端的服务;分割与重组数据;按端口号寻址;连接管理;差错控制和流量控制,纠错; 阅读全文
posted @ 2013-04-13 16:48 karlthas 阅读(442) 评论(0) 推荐(0)
摘要:Dear Candidate, 虽然说是打酱油 不过被拒了还是有些微微失落。nothing to say,在接下来的几月中更加努力吧!Thank you for applying for Microsoft intern position.We do appreciate all the efforts you have made to apply for our position. However, After the CV and Paper Test selection,there is limited vacancy at this stage to suit your knowled 阅读全文
posted @ 2013-04-12 18:12 karlthas 阅读(305) 评论(0) 推荐(0)
摘要:整个过程可以看做是三部分的链表化,左子树、根节点和右子树。递归地对这三部分进行链表化,在链表化中处理好左子树最右节点与根节点的链接关系、根节点与右子树的关系,那么整个过程就能够完成。代码TreeNode * convert(TreeNode * root){ TreeNode *LastNodeInList = NULL; convertNode(root,&LastNodeInList); TreeNode ListHead = LastNodeInlist; while(ListHead != NULL && ListHead->left != NULL) { 阅读全文
posted @ 2013-04-12 17:53 karlthas 阅读(124) 评论(0) 推荐(0)