面试题目收集(4)
1.google一道面试题目:一个数列中Q中的每个元素至少能被a和b中的一个元素整除。现给定a和b,要求计算出Q的前几项。例如a=3,b=5,则序列:3,5,6,9,10,12....
思路:设计两个index,分别指向被3和被5整除的数,被3整除的数只能每次递增3,被5整除的数只能每次递增5。判断那个小,就添加到数组中,将添加到数组中的索引指向当前的索引。
个人觉得:这个何海涛里面的丑数解法有点雷同,我也是这么悟出来的,必须要设置一个数组保存前面的值
#include <iostream>#include <string>#include <stack>using namespace std;void reverseSub(char str[],int start,int end){if(!str||start<0||end<0)throw new runtime_error("Invalid Input");if(start>=end)return;for(;start<end;++start,--end){char t = str[start];str[start] = str[end];str[end] = t;}}void reverseStr(char str[]){int len = strlen(str);reverseSub(str,0,len-1);int beg = 0;int end =0;cout<<str<<endl;for(int i=0; i<len;){while(i<len && str[i] != ' ')++i;end = i - 1;reverseSub(str,beg,end);while(i<len && str[i] == ' ')++i;beg = i;}}int main(){char str[] = "ss i am lsj";reverseStr(str); cout<<str<<endl;system("pause");return 0;}