百度面试题(一):假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数和正数间元素相对位置不变。时空复杂度要求分别为:o(n)和o(1)。
其实开始的时候我也是一头雾水,在纸上画画之后发现,其实就是一道变形的插入排序。幸运的是这里不需要比较大小,要比较大小的话时间复杂度是O(n2),只用判断正负,那时间复杂度就只要O(n)了。
如:-3,1,2,-1,-3,4。其实就是把正数后面的第一个负数(如-1)插到第一个正数(1)的前面,负数之间的每个正数(1,2)后移一位,就这么简单。时间复杂度刚好为O(n),控件复杂度为O(1)。
//算法分开正负数
void insertSort(int*A ,int size)
{
int minus=-1,plus=-1;
int tmp=0;
for(int i=0;i<size;i++)
{
if(minus==-1)
{
if(A[i]<0&& plus>=0)
{
minus=i;
}
if(A[i]>0&& plus<0)
{
plus=i;
}
}
if(minus>=0&& plus>=0)
{
tmp=A[plus];
A[plus++] = A[minus];
for (int k = minus; k> plus; k--)
{
A[k] = A[k -1];
}
A[plus]=tmp;
minus=-1;
}
}
}
百度面试题(二),给定一个存放正数的数组,重新排列数组使得数组左边为奇数,右边为偶数,且保证奇数和偶数之间元素相对位置不变。时空复杂度要求分别为:o(n)和o(1)。
其实这两道笔试题没有什么区别,要说有区别就是看你是否理解。
//算法分开奇偶数
void insertSort1(int*A ,int size)
{
int minus=-1,plus=-1;
int tmp=0;
for(int i=0;i<size;i++)
{
if(minus==-1)
{
if(A[i]%2!=0&& plus>=0)
{
minus=i;
}
if(A[i]%2==0&& plus<0)
{
plus=i;
}
}
if(minus>=0&& plus>=0)
{
tmp=A[plus];
A[plus++] = A[minus];
for (int k = minus; k> plus; k--)
{
A[k] = A[k -1];
}
A[plus]=tmp;
minus=-1;
}
}
}
测试代码如下:
//测试代码
int main() {
int A[]={2,1,-2,12,4,-2,-4,-6 };
int size=sizeof(A)/sizeof(int);
cout<<"-----------------------算法分开正负数-----------------------"<<endl;
for(int i=0;i<size;i++)
{
cout<<A[i]<<"\t";
}
cout<<endl;
insertSort(A,size);
for(int i=0;i<size;i++)
{
cout<<A[i]<<"\t";
}
cout<<endl;
cout<<endl;
cout<<"-----------------------算法分开奇偶数-----------------------"<<endl;
int B[]={2,1,-2,12,4,-2,-4,-6};
int s=sizeof(B)/sizeof(int);
for(int i=0;i<s;i++)
{
cout<<B[i]<<"\t";
}
cout<<endl;
insertSort1(B,s);
for(int i=0;i<s;i++)
{
cout<<B[i]<<"\t";
}
getchar();
return0;
}
运行结构截图:
分享到:
相关推荐
百度笔试题常常涉及到算法与数据结构的运用,如排序算法(快速排序、归并排序等)、查找算法(二分查找、哈希查找)以及常用的数据结构(链表、栈、队列、树、图)。这些基础知识是解决问题的基础,熟练掌握能提高...
在准备BAT(百度、阿里巴巴、腾讯)这样的中国顶级互联网公司的...总之,这个“BAT iOS算法笔试题集合”是一个宝贵的资源,它涵盖了面试中可能遇到的各种问题,通过深入学习和实践,你将更有信心面对大厂的面试挑战。
本文档总结了北京-百度计算机视觉算法工程师笔试的回忆版,涵盖了计算机视觉、算法设计、人工智能等方面的知识点。下面将对标题、描述、标签和部分内容进行详细解释和总结。 一、OSI七层模型 OSI七层模型是国际...
【百度笔试题】中的知识点主要涉及三个方面:编程题、算法题和系统设计。下面将分别对这三个方面进行详细的解析。 1. **编程题** 这道编程题要求编写一个函数`is_include(char *a, char *b)`,判断字符串`b`的所有...
大疆公司是一家以生产民用和商用无人飞行器知名的高科技企业,对算法工程师的笔试通常会包含但不限于计算机视觉、机器学习、数据结构、算法设计和分析等领域的知识点。 以下是根据大疆公司背景及算法工程师职位需求...
从给定的百度公司笔试题中,我们可以提炼出多个IT领域的知识点,主要集中在数据结构、算法、编程语言特性以及操作系统原理上。以下是对这些知识点的详细解析: ### 数据结构与算法 1. **排序算法的特性**:题目...
根据给定文件的信息,我们可以提炼出与“百度校园招聘笔试试题—深度学习算法研发工程师”相关的几个核心知识点。下面将详细阐述这些知识点,并结合题目中的具体问题进行深入解析。 ### 1. 当N很大时,降低计算...
【百度笔试题】涵盖的内容广泛,涉及编程、算法、系统设计等多个方面,下面将逐一解析这些题目中的知识点。 1. **编程题 - 字符串判断**: 这道题目要求编写一个函数来判断字符串b的所有字符是否都在字符串a中出现...
【标题】:“百度最全笔试题”所涵盖的IT知识点主要集中在Java编程语言上,这是一份集合了大量关于Java的面试与笔试问题的资源。Java作为广泛应用的面向对象编程语言,其知识点广泛且深入,涵盖了语法基础、数据结构...
【百度历年笔试试题汇总】是一份集合了百度公司历年技术类笔试题目的资源,涵盖了算法、数据结构等多个核心IT领域。这些题目旨在测试应聘者的编程能力、逻辑思维以及对计算机科学基础知识的理解。 1. **数据库通知...
百度2010-2011年各部门招聘笔试题及面经总结.doc 百度2014校园招聘笔试试题-产品经理笔试题.doc 百度2014校园招聘笔试试题-北京站未知岗位.docx 百度2014校园招聘笔试试题-南京PC客户端开发笔试题.doc 百度2014校园...
【标题】:“百度Java笔试题”通常涉及到的Java编程基础及高级概念 在“百度Java笔试题”中,我们可以预见到一系列与Java编程语言相关的测试题目。这些题目旨在评估候选人在Java开发领域的知识水平,包括但不限于...
【百度笔试题】是应聘者在申请百度职位时可能会遇到的测试内容,涵盖了一系列的编程基础知识,主要包括排序算法、多线程同步、内存管理、网络协议、数据结构和操作系统等主题。下面是对这些知识点的详细解释: 1. *...
1. **算法与数据结构**:百度的笔试题通常会测试基础的算法,如排序、查找,以及复杂的数据结构,如链表、树、图和队列等。 2. **编程基础**:应聘者需要熟练掌握至少一种编程语言,如Java、C++或Python,并理解...
这些题目涵盖了计算机科学和软件工程中的多个核心概念,主要涉及数据结构、算法、操作系统、网络协议、编程语言特性和软件开发技术。以下是每个题目及其相关的知识点详解...准备这样的笔试题可以提高在IT行业的竞争力。
【标题解析】:“08百度笔试题(北京)”指的是2008年百度公司在北京市进行的一次技术笔试,主要针对系统开发工程师等职位。题目旨在考察应聘者的编程能力、算法理解和系统设计思维。 【描述解析】:16号的百度北京...
**二、算法与程序设计题** 1. **二叉树最近公共父节点** - 算法描述:从两个节点分别向上遍历,直到找到公共父节点为止。可以使用递归或迭代方法实现。 - 代码实现(Python为例): ```python class TreeNode: ...
### 百度网上笔试题及答案解析 #### 题目一:字符串倒序函数实现 **题目描述:** ...以上是针对百度网上笔试题的具体解答和解析,涵盖了编程实现、算法设计等多个方面,希望能帮助到准备参加百度笔试的同学。
【压缩包子文件的文件名称列表】:百度2008.4.26.doc、baidu.rar、质量部笔试题.rar 1. **百度2008.4.26.doc** - 这可能是一份特定日期(2008年4月26日)的百度笔试题目文档,可能包含了编程题目、逻辑思维题、数据...