热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

最近几个公司的笔试题

(1)RGB排序,一个字符串,里面只有三种字符RGB,所有的R都在G的前面,所有的G都在B的前面。将给定字符串按照此规律排序。要求不允许用辅助空间,复杂度控制在O(N)。遍历一遍就排好序。这道题有

(1)RGB排序,一个字符串,里面只有三种字符R G B,所有的R都在G的前面,所有的G都在B的前面。将给定字符串按照此规律排序。要求不允许用辅助空间,复杂度控制在O(N)。遍历一遍就排好序。

这道题有些不好搞,想着用快排达不到O(n)
思路只有遍历 ,然后利用已经得到的结果处理 还要思考啊~

想了一下,快排的话 取前k个最小值的话,从期望的角度考虑可以达到o(n)
因此我考虑从快排入手 ,只将比G小的放到G之前,将比G大的放在其后。
代码如下
#include "stdio.h"
#include "string.h"
#include
#include
using namespace std;
#define MAX 1024
int cmp(char c,char d)
{
int ret=0;

if(c=='B')
{
(d=='B')?ret=0:ret=1;
}
else if(c=='G')
{
d=='R'?ret=1:(d=='G')?ret=0:ret=-1 ;
}
else if(c=='R')
{
d=='R'?ret=0:ret=-1;
}
return ret;
}
int Partion(char *str,int s,int e)
{
int i=s-1;
int j;
for(j=s;j{
if(cmp(str[j],str[e])<0)
{
swap(str[i+1],str[j]);
i+=1;
}
}
swap(str[i+1],str[e]);
return i+1;
}
int quickSort(char *str,int s,int e)
{
int p=0;
if(s{
p = Partion(str,s,e);

}
return p;
}


int main()
{
char str[MAX];
int i=0;
int len =0;
int p;
scanf("%s",str);
len = strlen(str);
for(i=0;i{
if(str[i]=='G')
break;
}
swap(str[i],str[len-1]);
/*至于判断是否有G或者B这里省去了,直接考虑包含RGB的情况*/
p = quickSort(str,0,len-1);
for(i=p+1;i{
if(str[i]=='B')
break;
}
swap(str[i],str[len-1]);
p = quickSort(str,p+1,len-1);
cout<return 0;
}
不知道还有没有好的方法来解决这个问题!求指导!

(2)句子翻转

i am superman ---> superman am i

答案:这个简单 做了很多遍了,amazon笔试题里面写过,先每个单词转,后整个转


(1)判断两个Query是否相同北京欢迎你你欢迎北京

答案:搜索引擎会对其进行分词,一般为 北京/欢迎/你  你/欢迎/北京

           只有判断句子是否相同,这个不太清楚

(2)最长前缀子串问题

a="abdcdef"   b="dex"   则最长子串是de

 答案:这种情况下对a建立后缀数组,然后查找b的最长前缀匹配


(3)某数据库应用,大量的插入和查询,查询速度只有10/秒,请问:问题可能在哪里?

答案:应该是索引没有,或是索引建的不好

(4)中国到香港搭了一个10G的私有光线,单进程传输速度只有1,2M,请问:问题可能出在哪里?

答案:(待研究)应该是服务器 到客户端 这里的流量不够吧。

(5)有个Sequence,形如:S[]={a,b,...z,aa,ab,...az,ba,bb,...bz,...aaa,aab,...aaz,...}

给定一个字符串,查找在不在Sequence里,位置是多少?

答案:也就是一个26进制的处理吧,二分查找吧


(1)区间序列 (2,3) (4.2,6) (7,9)判断给定的一个区间与上面哪些区间有交集,比如给定(4,5)则输出(4.2,6)

答案:并查集解决吧,真的每个区间的点 建立祖先,然后判断是否祖先相同就行了


(2)两个有序数组,A[k]B[k]长度都为k。求前k个最小的(a[i]+b[j])

答案:去A[0]+B[0]作为第一个,然后A和B分别取后一个减前一个差值最小的那一边


1,strcmp函数实现。

2,判断大段小段模式。

3,有序链表的创建。


系统设计题:

大图导航系统:

(1)现有大图1W张,像素:1024*4096。系统可以增加或者删除图片。

(2)手机屏幕分辨率240*320.内存16M,手机本地存储256M。只能显示图片局部,用户左右移动来查看大图的其他部分。

(3)若干台PC机,内存4G,硬盘800G,双核CPU

问题:逻辑结构图,模块划分?模块间的关系,为何这么划分,原因是?

问题:如果大图数量增加,安装该应用的手机客户端增加,会带来哪些问题,怎么解决?

程序设计题:

一棵树,每个节点保存一个数字,找两个相同的节点(所谓相同的节点是指,两个节点的值相同,并且它们的子结构也要相同,就是以他俩为跟的那两颗子树也要一模一样。)

答案:递归吧

一个平面,上有n个点,点与点之间可能有连接,判断这里是否有环路。

答案:这个也可以并查集吧,公共祖先的祖先是其孩子 就可能环路吧






推荐阅读
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
author-avatar
再见傻瓜傻瓜_299
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有