admin 管理员组文章数量: 1184232
2024年4月30日发(作者:十进制怎么算)
2021亚马逊在线笔试题目
2021亚马逊在线笔试题目
2小时,两个题目。在线编程,英文题目。当时没做好,完了自己
把他们完成了。答案是我自己写的,自己测试没问题,若有错误请指
正。
Question 1 / 2
Question:
We have an array representing customers shopping records.
For example, its an array like this:
custA, item1,
custB, item1,
custA, item2,
custB, item3,
custC, item1,
custC, item3,
custD, item2,
This array indicates that customer A bought item 1, customer
B bought item 1, customer A bought item 2, customer B bought item
3, etc..
For a given item X and shopping records array, write code
to find out what else (item Y) was bought mostly by the customers
who bought item X.
For example, in above example, if X is item 1 then Y should
be item 3.
Rules:
1. One customer can only buy one item once.
2. The mostly brought item should not be item X.
3. If no customer brought item X, then return "None'
4. If all the customers who brought item X only brought item
X, then return "None'
5. The first line of input is the item X. The second line
of input is the shopping record array, this shopping record array
is split by space.
6. If there are many other mostly brought items which have
equally brought times, then return any one of those items.
Examples:
Input1:
item1
custA item1 custB item1 custA item2 custB item3 custC item1
custC item3 custD item2
Output1:
item3
Input2:
item2
custA item1 custB item1 custC item1 custA item2 custB item3
custA item3
Output2:
item1
(The output2 can be item3 too)
/* Enter your code here. Read input from STDIN. Print output
to STDOUT */
#include
#include
#include
#include
#include
#include
#include
using namespace std;
char* findMostlyBroughtItem(char* shippingRecordArray[],
int length, char* givenItem);
inline bool isSpace(char x){
return x == ' ' || x == 'r' || x == 'n' || x == 'f' ||
x == 'b' || x == 't';
}
char * rightTrim(char *str){
int len = strlen(str);
while(--len=0){
if(isSpace(str[len])){
str[len] = '0';
}else{
break;
}
}
return str;
}
char * getInputLine(char *buffer, int length){
if(fgets(buffer,length, stdin)==NULL){
return NULL;
}
rightTrim(buffer);
if(strlen(buffer)=0){
return NULL;
}
return buffer;
}
int splitAndConvert(char* strings,char* array[]){
char*tokenPtr = strtok(strings, );
int i=0;
while(tokenPtr!=NULL){
array[i] = tokenPtr;
i++;
tokenPtr=strtok(NULL, );
}
return i;
}
int main()
{
char givenItem[1000] = {0} ;
while(getInputLine(givenItem, 1000)){
char line[1000];
getInputLine(line, 1000);
char* shoppingRecordArray[1000] = {0};
int length = splitAndConvert(line,shoppingRecordArray);
if(length==0){
break;
}
char * item = findMostlyBroughtItem(shoppingRecordArray,
length, givenItem);
if (NULL != item)
{ // 原来系统供应的代码。这里没有NULL推断
cout
free(item); // 自己加的
}
}
return 0;
}
void
print(pair
cout endl;
}
//your code is here
//下面才是让写代码的地方,其他的系统已经自动给出。主函数,
只有一点点修改。
char* findMostlyBroughtItem(char* shoppingRecordArray[],
int length, char* givenItem)
{
if (NULL == shoppingRecordArray || NULL == givenItem)
return NULL;
string obj_item(givenItem);
// 将用户信息 与 购买商品信息 存入multimap record
multimap
for (int i = 0; i length; i += 2)
{
string customer(shoppingRecordArray[i]);
string item(shoppingRecordArray[i+1]);
(pair
}
// 提取出购买了obj_item商品的客户名称集合 customers
set customers;
for (map
{
if (0 == (*it).e(obj_item))
{
((*it).first);
}
}
// 遍历购买记录 multimap record
// 若客户名称 在 集合set customers 存在,则将商品插入map
result
map
for (map
{
for (set::iterator ic = (); ic !=
(); ic++)
{
if (0 == (*it).e(*ic))
{
/*
if (() != ((*it).second))
{
result[(*it).second] += 1;
}
else
(pair
*/
result[(*it).second] += 1;
break;
}
}
}
pair
// 遍历map result, 查找最大,而非obj_item的商品名称
for (map
{
if (0 == (*it).e(obj_item))
continue;
if ((*it).second )
top = make_pair((*it).first, (*it).second);
}
//cout Top: t endl;
char *p = (char *)malloc(() + 1);
if (NULL != p)
{
strcpy(p, .c_str());
return p;
}
return NULL;
}
Question 2 / 2
Question:
As you know, two operations of Stack are push and pop. Now
give you two integer arrays, one is the original array before
push and pop operations, the other one is the result array
after a series of push and pop operations to the first array.
Please
give the push and pop operation sequence.
版权声明:本文标题:2021亚马逊在线笔试题目 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1714488201a682404.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论