摘要:
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。看完何海涛的解答,我觉得这个题目可以抽象到一个更高的层次,与某些问题有异曲同工之妙,比如判断单链表是否有环、寻找单链表中的倒数第K个元素,包含min函数的栈等,都是定义两个变量,一个是主变量,一个是辅助变量。程序中,定义了两个变量,一个变量求连续子数组的和,另一个变量的作用是记录这整个过程中最大的那个和。需要考虑到的特殊情况是 1、异常输入,比如数组长度为0;2、数组元素全部为负数的时候,题目退化成寻找最大的元素。根据以上的信息,我们 阅读全文
摘要:
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 阅读全文
摘要:
//题目:求两个大于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 阅读全文
摘要:
题目描述: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 阅读全文
摘要:
总结一下本书中遇到的大部分面试题。面试题3:二维数组中的查找题目:在一个二维数组中,每一行都按照从左到右的递增顺序排列,每一列都按照从上到下递增的顺序排列,请完成一个函数,输入这样的一个整数,判断数组中是否含有该整数。面试题4:替换空格题目:请实现一个函数,把字符串中的每个空格替换成%20。面试题5:从尾到头打印链表题目:输入一个链表的头结点,从尾到头反过来打印每个结点的值。面试题6:重建二叉树题目:输入某二叉树前序遍历和中序遍历的结果,请重建出该二叉树。假设节点没有重复的。面试题7:用两个栈实现队列题目描述:如题。面试题8:旋转数组的最小数字题目:把一个数组最开始的若干个元素搬到数组的末尾, 阅读全文
摘要:
题目大概描述:已知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 阅读全文
摘要:
今天腾讯公布了北京的实习生笔试名单,很意外的没有入围,我投的是腾讯的测试开发方向(我是偏开发方向的)的实习生工作,腾讯在简历填写的时候有一个BG的选项,我选择的是TEG技术工程事业群,当时填写的时候还以为这个是和笔试的时候有关系,特意留意了一下这个群,但是今天公布实习笔试名单的时候意外的没有被选上,我推测可能的原因有如下:1、测试人员的需求小于开发人员;2、测试人员的素质要求高于开发人员。纵观整个北京的实习生笔试,从名单来看包含“测试”的搜索结果就6个,占总笔试人数的6/4604 不到1/700,一方面反映出了自己经验不够,不会选择从业方向,另外一方面也反映出来自己的实力不够打败那入选的6个, 阅读全文
摘要:
边界条件需要注意:两种方法,第一种遍历链表,寻找到节点,然后从头结点开始,寻找第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 阅读全文
摘要:
题目描述:把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之 阅读全文
摘要:
问题:一个整型数组中除了两个数字之外,其他的数字都出现了两次,写出程序找出这两个只出现了一次的数字,时间复杂度要求O(n),空间复杂度要求O(1).一看到这个题想到了很多“可能”的解法,很飘散的思绪,比如什么哈希啊,什么加A再减去A,剩下的就是单独的了啊,都是写没啥用的解法。后面看到了书上的解法,觉得很巧妙,于是贴了上来,顺便标明了自己当时不是很清楚的理解。书上说这道题很难,我觉得算法这种东西,本质上并没有难一说,而是主张一个“巧妙”,九拐十八弯。从易入难,举一反三是算法学习中必不可少的一种经历。闲话少说,言归正传,首先这个题目是要求我们找出数组中的两个分别出现了一次的数字,而且时间复杂度要求 阅读全文