Google 历年笔试面试30题

摘要:
C++实现:#include<iostream>usingnamespacestd;voidgenerate{intqa=1;intqb=1;int索引=0;而{如果{Q〔索引++〕=a*qa;qa++;}elseif{Q[index++]=b*qb;qb++;}否则{Q[索引++]=a*qa;qa++;qb++;}}intmain(){int*Q=newint[11];生成;forcout#incluse#inclaude 使用命名空间std;无效交换{charc=*a;*a=*b;*b=c;}voidproc{ifreturn;intn=strlen;inti=0,j=n-1;while(i

1、正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12
(1)、设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项
(2)、设计测试数据来验证函数程序在各种输入下的正确性。

C++实现:

#include<iostream>
using namespacestd;
void generate(int a,int b,int N,int *Q)
{
    int qa=1;
    int qb=1;
    int index=0;
    while(index<N)
    {
        if(a*qa<b*qb)
        {
            Q[index++]=a*qa;
            qa++;
        }
        else if(a*qa>b*qb)
        {
            Q[index++]=b*qb;
            qb++;
        }
        else
        {
            Q[index++]=a*qa;
            qa++;
            qb++;
        }
    }
}
intmain()
{
    int *Q=new int[11];
    generate(3,5,10,Q);
    for(int i=0;i<10;++i)
        cout<<Q[i]<<' ';
    cout<<endl;
}

变形,如果只包含数a和b,实现代码:

#include<iostream>
using namespacestd;
void generate(int a,int b,int N,int *Q)
{
    if(Q==NULL)
        return;
    int index=1;
    Q[0]=1;
    int *qa=Q;
    int *qb=Q;
    while(index<=N+1)
    {
        int minvalue=min(*qa*a,*qb*b);
        Q[index]=minvalue;
        while(*qa*a<=minvalue)
            qa++;
        while(*qb*b<=minvalue)
            qb++;
        ++index;
    }
}
intmain()
{
    int *Q=new int[11];
    generate(3,5,10,Q);
    for(int i=1;i<11;++i)
        cout<<Q[i]<<' ';
    cout<<endl;
}

2、有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在答谢字母的前面(大写或小写字母之间不要求保持原来次序),如有可能尽量选择时间和空间效率高的算法 c语言函数原型void proc(char *str) 也可以采用你自己熟悉的语言。

#include<iostream>
#include<cstring>
#include<ctype.h>
using namespacestd;
void swap(char *a,char *b)
{
    char c=*a;
    *a=*b;
    *b=c;
}
void proc(char *str)
{
    if(str==NULL)
        return;
    int n=strlen(str);
    int i=0,j=n-1;
    while(i<j)
    {
        while(i<j&&islower(str[i]))
            ++i;
        while(i<j&&isupper(str[j]))
            --j;
        if(i<j)
            swap(&str[i],&str[j]);
    }
}
intmain()
{
    char ch[]="AHdfhIKhhGkGE";
    proc(ch);
    cout<<ch<<endl;
}

3、如何随机选取1000个关键字?
给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字)。如何才能从这个无穷尽的流中随机的选取1000个关键字?

http://www.xuebuyuan.com/551780.html

http://ask.julyedu.com/question/447

免责声明:文章转载自《Google 历年笔试面试30题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇旋转矩阵、欧拉角、四元数理论及其转换关系link2sd教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

说说接口封装

今天,我为同事封装了一个接口。当谈到接口封装时,有很多关于它的讨论。在很多情况下,说一个服务好,一个服务坏,实际上是在吐槽服务团队之外暴露的界面质量。无论哪种语言,抽象的封装接口都由一个函数名、几个参数和几个返回值组成。总之,参数不应该被封装……我们在内部尝试接口_Catch不会抛出异常,所有信息都将以错误代码的形式返回。就php而言,建议进行异常处理。...

四、使用ADB命令清除缓存

1、 ADBShell应用程序查看目录结构:adbshells查看系统当前日期:adbselldate查看系统CPU使用情况:adbsHELcat/proc/cpuinfo查看系统内存使用情况:adbshellcat/proc/meminfo显示所有应用程序:adbshelpmlistpackages显示系统自带的应用程序:adshellpmlistpack...

部署springboot+vue项目文档(若依ruoyi项目部署步骤)

1: 部署Linux+nginx部署背景代码1.1因为我使用了idea工具进行开发,所以终端中的mvnclean包生成了相应的jar包。这个jar包可以在相应文件所在目录的目标中找到。linux服务器需要加载redis和nginx。redis存储缓存数据,nginx用于代理前端和后端服务。打包vue项目并将dist文件复制到tomcat的webapps目录中...

tomcat不打印日志的原因及解决办法

tomcat的日志在刚启动的时候可以正常打印,系统正常运行几天以后就会出现不打印日志或者日志打印的内容缺少的情况,但是系统还是可以正常使用的,重启tomcat以后日志打印就又正常了,请问一下这是什么原因呢?日志框架使用的是log4j,使用了日志按天分割,每天的日志量是5G左右1.下载日志jar包,例如:commons-logging-1.1.1.jar。放在...

koroFileHeader插件快速入门使用教程

插件下载插件可以直接在vscode的扩展中查找koroFileHeader,但是有时候由于网络的问题会查找不到软件。插件配置koroFileHeader支持许多功能,但是不是所有功能都是需要,我们关注往往是如何配置注释内容和注释的一些选项。"fileheader.cursorMode":{//这部分是函数头的配置},"fileheader.customMad...

JVM内存状况查看方法和分析工具

Java本身提供了多种丰富的方法和工具,帮助开发人员查看和分析GC和JVM内存的状态。同时,开源社区和商业社区也有一些工具来查看和分析GC和JVM内存的状态。在内存分析中,JVisualVM的最大优点是可以通过安装VisualGC插件来分析GC趋势和内存消耗细节。使用JMap查看当前JVM中每一代的内存状态、JVM中对象的内存使用情况,并导出整个JVM中的内...