Google 历年笔试面试30题
生活随笔
收集整理的這篇文章主要介紹了
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)、設計測試數據來驗證函數程序在各種輸入下的正確性。
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
總結
以上是生活随笔為你收集整理的Google 历年笔试面试30题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyEclipse — Maven+Sp
- 下一篇: openstack 之 控制节点物理机备