Google 历年笔试面试30题

简介: 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)、设计测试数据来验证函数程序在各种输入下的正确性。

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 namespace std;

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++;
        }
    }
}

int main()
{
    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 namespace std;

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;
    }
}

int main()
{
    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 namespace std;

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]);
    }
}

int main()
{
    char ch[]="AHdfhIKhhGkGE";
    proc(ch);
    cout<<ch<<endl;
}

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

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

 

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

相关文章
|
存储 关系型数据库 MySQL
备战春招系列】历年来关于MySQL高频面试真题的梳理
备战春招系列】历年来关于MySQL高频面试真题的梳理
339 2
|
Web App开发 JavaScript 前端开发
社招中级前端笔试面试题总结
社招中级前端笔试面试题总结
494 0
|
SQL Java
java面试题笔试常见选择题大全含答案
java面试题笔试常见选择题大全含答案
|
人工智能 自然语言处理 算法
通义灵码助力技术求职:如何成为笔试面试冲刺的“超级助手”
在技术岗位竞争日益激烈的当下,求职季的备战已不仅是知识储备的较量,更是效率与实战能力的比拼。面对海量面试题、复杂算法挑战及快速迭代的技术框架,开发者亟需高效工具辅助突破瓶颈。阿里云推出的智能编码工具通义灵码,凭借其代码生成、优化及智能问答等核心能力,正成为开发者备战求职季的“超级助手”。
|
存储 算法 C语言
从C语言到C++_39(C++笔试面试题)next_permutation刷力扣
从C语言到C++_39(C++笔试面试题)next_permutation刷力扣
438 5
|
网络安全 Windows
PentestGPT-V0(1),网络安全面试题2024笔试
PentestGPT-V0(1),网络安全面试题2024笔试
|
存储 算法 Java
盛算信息-面试经历-笔试部分-完整题目(一)
盛算信息-面试经历-笔试部分-完整题目(一)
277 2
|
Android开发
71,字节跳动历年校招Android面试真题解析
71,字节跳动历年校招Android面试真题解析
|
存储 设计模式 编译器
【C++】—— 多态常见的笔试和面试问题
【C++】—— 多态常见的笔试和面试问题
378 0
|
存储 设计模式
继承和多态中的常见笔试面试题(一)
继承和多态中的常见笔试面试题(一)

热门文章

最新文章