- 博客(34)
- 收藏
- 关注
原创 百度测试开发面经最新
一面:三个编程题,手写代码1、将数据中0元素挪到非0元素后面,非0元素顺序不变。如输入[0 1 0 3 12] 输出 [1 3 12 0 0];2、给定一个数。判断该数是不是另外一个数的平方,如:输入:25,输出:true;输入:26,输出:false;3、判断一棵树是不是镜像的。两个小时后就通知一面过了,然后预约了二面的时间,第二天就进行了二面。二面:两个编程:1...
2018-08-04 17:25:40
1770
原创 数字变字符串的函数
string intTostring(int number){ stirng s=""; while(number) { s+="0"+number%10; //将个位上的数字变成字符 number/=10; } reverse(s.begin(),s.end()); //翻转字符串 retu...
2018-07-23 17:29:57
485
原创 算法面试准备的范围
1.各种排序2、基础数据结构和算法的实现:如堆,二叉树,图3、基础数据结构的使用:如链表,栈,队列,哈希表,图,Trie、并查集4、基础算法:深度优先,广度优秀,二分查找,递归5、基本算法思想:递归、分治。回溯搜索、贪心、动态规划...
2018-07-23 17:08:59
188
原创 打印1到最大的n位数
输入数字n,按顺序打印出从1到最大的n位十进制数,如:输入3,则打印出1,2,3,......999。void PrintN(int n){ if (n<=0) return ; char *number=new char[n+1]; memset(number,'0',n); number[n]='\0'; while(!Inc...
2018-07-20 16:56:45
123
原创 O(logn)求斐波那契数列
代码:double Power(double base,int exp){ if (exp==0) return 1; if (exp==1) return base; double result=Power(base,exp>>1); result*=result; if (exp&0x1==1...
2018-07-20 14:57:42
510
原创 两个二进制数的异或结果是什么?
a^b=|a-b|(按位相减取绝对值,再按位累加)解答:二进制数a与b异或,即a和b两个数按位进行,如果对应位相同,即为0(这个时候相当于对应位算术相减),如果不相同,即为1(这个时候相当于对应位算术相减的绝对值)。由于二进制每个位只有两种状态,要么是0,要么是1,则按位异或操作可以表达为按位相减取绝对值,再按位累加。举个例子:6(110)与3(011)异或为(101),按位相减为(1 0 -1)...
2018-06-07 11:43:54
8731
原创 给定一个整数,判断该数是否是回文数
#include <iostream>using namespace std;bool judge(int n){ int help=1; while(n/help>=10) help*=10; while(n!=0) { if(n/help!=n%10) { return false; break; } n=(n%help)/10; help/=100; }...
2018-05-18 15:37:07
1051
原创 二叉树的深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class...
2018-04-28 15:22:04
107
原创 数字在排序数组中出现的次数
统计一个数字在排序数组中出现的次数。class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int number=0; if (!data.empty()) { int len=data.size(); int fi...
2018-04-28 12:16:09
95
原创 两个链表的第一个公共结点
输入两个链表,找出它们的第一个公共结点。法一:在链表一上顺序遍历每个结点,每遍历一个结点,顺序遍历链表二。时间复杂度为O(mn)法二:利用两个辅助栈,遍历两个链表,将链表元素放入栈中,从栈顶取,直到两个元素不一致时结束,则对应的就为第一个公共结点,时间复杂度O(m+n),空间复杂度O(m+n)法三:遍历两个链表求其长度,让长的链表先走若干步,然后在遍历两链表,若元素相等则为公共结点,不等则继续向下...
2018-04-28 11:03:56
97
原创 数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围: 对于%50的数据,size<=10^4 对于%75的数据,size<=10^5 对于%100的数据,size<=2...
2018-04-28 09:57:49
104
原创 浅谈数据结构
1、常用的时间复杂度所耗费的时间从小到大依次是:O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)2、算法的特性:输入、输出、有穷性、确定性和可行性。其中输入>=0,输出>0...
2018-04-28 09:55:04
99
原创 第一次只出现一次的字符
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置class Solution {public: int FirstNotRepeatingChar(string str) { if (str.empty()) return -1; const int table=256; ...
2018-04-26 17:27:21
114
原创 丑数
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。法一:以空间换取时间,提高了效率class Solution {public: int GetUglyNumber_Solution(int index) { if (index<=0) ...
2018-04-26 16:20:08
321
原创 网络层
中间设备又称为中间系统或中继系统:物理层中继系统:转发器数据链路层中继系统:网桥或者桥接器网络层中继系统:路由器网桥和路由器的混合物:桥路器网络层以上的中继系统:网关...
2018-04-26 10:54:25
381
原创 把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。class Solution {public: string PrintMinNumber(vector<int> numbers) { string result; vecto...
2018-04-25 23:08:56
114
原创 1到n整数中1出现的次数
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。法一 :class Solution {public: int NumberOf1Between1AndN_So...
2018-04-25 17:56:12
170
原创 数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。法一:如果存在一个数字出现次数超过数组长度的一半,那么排序后的数组的中位数一定为要求的数字。转换为求第n/2大的数字。然后判断该数字出现次数是否大于长度的一半。class Solution ...
2018-04-24 16:38:35
173
原创 计算机网络 概述
1、网络三网:电信网络、有线电视网络和计算机网络。2、计算机网络功能:连通性(上网用户之间可交换信息,好像用户的计算机可以彼此直接连通一样)和共享(资源共享)。3、网络把许多计算机连接在一起,因特网则把许多网络连接在一起。4、因特网发展的三个阶段:(1)从单个网络ARPANET向互联网发展的过程;1983年TCP/IP协议成为ARPANET上的标准协议。(2)第二阶段的特点是建成了三级结构的因特网...
2018-04-23 15:44:38
153
原创 调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。法一思想:新建两个数组。一个保存奇数,一个保存偶数,然后在copy给原来的array数组。缺点:须另外开辟内存空间class Solution {public: void reOrderArray(vector<in...
2018-04-19 21:23:32
85
原创 数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。class Solution {public: double Power(double base, int exponent) { double result=1; int flag=0; if (exponent==0) ...
2018-04-19 21:00:09
60
原创 二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。位运算:与、或、异或、左移(<<)、右移(>>)。m<<n:表示m左移n位,左移n时,最左边的n位被丢弃,同时在最右边补上n个0.m>>n:表示m右移n位,若数字为无符号数值,则用0填补最左边的n位,若数字为有符号数值,则用数字的符号位填补最左边的n位,正数用0填补,负数用1填补。cla...
2018-04-19 16:12:41
107
原创 矩形覆盖
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?该问题为斐波那契数列问题。可以通过写出前几个矩形的情况,推断出该问题的分类。class Solution {public: int rectCover(int number) { int result=0; if (number<4...
2018-04-19 12:05:54
75
原创 变态跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。class Solution {public: int jumpFloorII(int number) { int result=1; if (number<=0) return 0; for (int i=2;i...
2018-04-18 17:39:25
69
原创 青蛙跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。class Solution {public: int jumpFloor(int number) { int result=0; if (number<=0) return 0; if (number<3) ...
2018-04-18 16:47:28
71
原创 斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39n=0,f(n)=0n=1,f(n)=1n>1,f(n)=f(n-1)+f(n-2)代码如下:class Solution {public: int Fibonacci(int n) { //递归方法复杂度太大 /*if (n<=0) r...
2018-04-18 16:28:13
488
原创 旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。//思路:该数组为部分排序,可利用二分查找,提高查找效率;如果应用遍历查找也是可以的,但是时间复杂度为O(n)。int M...
2018-04-18 10:29:32
116
原创 查找和排序
掌握二分查找、归并排序和快速排序。能随时正确完整的写出它的代码。查找:顺序查找、二分查找、哈希表查找和二叉排序树查找。如果面试题是要求在排序的数组中查找一个数字或者统计某个数字出现的次数,我们都可以尝试用二分查找算法。快速排序的程序如下:int Parition(int data[],int length,int start,int end){ if (data==NULL||length<...
2018-04-17 23:26:58
128
原创 用两个栈实现队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。//栈:先进后出 队列:先进先出class Solution{public: void push(int node) { stack1.push(node); } int pop() { int res; if (stack2.empty()...
2018-04-17 22:15:42
66
原创 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。//前序遍历:遍历顺序为根结点、左结点、右结点;中序遍历:遍历顺序为左结点、根结点、右结点。** * Definition for binary tree * st...
2018-04-17 21:40:15
86
原创 二叉树的特例
二叉树的特例:1、二叉搜索树:左子结点总是小于或等于根结点,而右子结点总是大于等于根结点。2、堆:最大堆和最小堆。最大堆中根结点的值最大,最小堆中根结点的值最小。适用于快速找出最大值或者最小值的问题。3、红黑树:树中的结点定义为红黑两种颜色,并通过规则确保根结点到叶结点的的最长路径的长度不超过最短路径的两倍。红黑树是具有下列着色性质的二叉查找树:(1)每一个结点或者着成红色,或者着成黑色;(2)根...
2018-04-17 16:46:02
474
原创 从尾到头打印链表
输入一个链表,从尾到头打印链表每个节点的值。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solution {public: ve...
2018-04-17 15:54:22
76
原创 替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { if (str==NULL||length<0) return ; ...
2018-04-17 12:09:14
68
原创 二维数组的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。#include <iostream>using namespace std;bool Find(int *maxtrix,int rows,int columns,int number){ bool res=fal...
2018-04-17 10:03:08
67
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人