amazon 笔试: 购物统计

Leetcode amazon 面试题系列(一) 最近在刷亚麻的面试题,然后顺便想练一练python的技巧,所以就用python刷了一边。然后mark一下以后可以复习。leetcode 771.大概就是给定两个字符串a 和b,问b 中出现了多少次a 的字符。记录一个python的用法:def numJewelsInStones(self, J, S): return sum(map(J.count, S))这里利用了 python 的几个... 阅读详情
/* 
 * File:   amazonOnline_test1.cpp
 * Question 1:
We have an array representing customer’s shopping records.
For example, it’s 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)
 * 
 */


#include <iostream>
#include <string>
#include <map>
#include <set>
#include <algorithm>
#include <cstring>
#include <cstdio>


using namespace std;


char* findMostlyBroughtItem(char* shippingRecordArray[], int length, char* givenItem);
/*
 /a:蜂鸣,响铃 
/b:回退:向后退一格 
/f:换页 
/n:换行,光标到下行行首 
/r:回车,光标到本行行首 
/t:水平制表 
/v:垂直制表 
//:反斜杠 
/':单引号 
/":双引号 
/?:问号 
/ddd:三位八进制 
/xhh:二位十六进制 
/0:空字符(NULL),什么都不做 
 */
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<<item<<endl;
            free(item);  // 自己加的
        }
    }
    return 0; 
}


char* findMostlyBroughtItem(char* shoppingRecordArray[], int length, char* givenItem){
    if(NULL==shoppingRecordArray || NULL==givenItem || length <=0)  
     return NULL;
    //save shopping records 
     multimap<string,string> mymap;
     
     multimap<string,string>::iterator mapit;
     multimap<string,string>::iterator mapit2;
     //save merchants and its number to be bought
     map<string, int> buymap;
     map<string, int>::iterator itbuymap;
   
     for(int i=0;i<length;i++){
         string customer(shoppingRecordArray[i++]);
         string item(shoppingRecordArray[i]);
         mymap.insert(make_pair(customer,item));
     } 
     string searchitem(givenItem);
     for(mapit=mymap.begin();mapit!=mymap.end();mapit++){
        //item found
         if(searchitem==mapit->second) {
            for(mapit2=mymap.begin();mapit2 != mymap.end();mapit2++) {   
                if(mapit->first==mapit2->first) {
                   itbuymap=buymap.find(mapit2->second);
                   if(itbuymap==buymap.end())
                     buymap.insert(make_pair(mapit2->second,1));
                   else
                     buymap[mapit2->second]++;  
                }
          }
        }
     }
   pair<string, int> founditem("",0);
   for(itbuymap=buymap.begin();itbuymap!=buymap.end();itbuymap++){
    if(itbuymap->first !=searchitem && itbuymap->second > founditem.second)   
        founditem=make_pair(itbuymap->first,itbuymap->second);
   }
   
   char *p=NULL;
   if(founditem.first != "") {   
       cout <<founditem.first<<endl;
       p=new char[founditem.first.length()+1];
       strcpy(p,founditem.first.c_str());
   }
 return p;   
}

【管理科学】第六十三篇 企业管理者招聘与人才博弈战略02 编号类型领域问题问题的数学分析(含逐步推理与数值范围)方法/手段/步骤/流程/话术/策略/行为/时序的所有内容和步骤(含数学表达式与数值分析)时序数学表达式及周期行动的数学表达式(含数值范围)关联知识和法律法规651组织博弈成本控制如何在保证质量的前提下有效控制成本?逐步推理: 1. 成本控制模型:成本每降低10%,利润可提升15%~25%。但过度降本可能影响质量和员工士气。 2. 控制效果:有效的成本控制可使利润率提升5%~10%。 3. 法律风险:需遵守劳动法和产品质量法。步骤与数学表 阅读详情

相关推荐

几道亚马逊面试题参考答案

以前给别人写的几道亚马逊面试题参考答案。题目在源代码文件内。

amazon笔试题

1.判断一年是否为闰年的方法 2.非递归实现exists方法 template class BinaryTree{ protected:     T* _data;     BinaryTree * _left;     BinaryTree * _right; }; template class BST:public BinaryTree{ public:

VergiL Wang的专栏 835

学习笔记7--激光雷达标定

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢! 此专栏是关于《自动驾驶汽车环境感知》书籍的笔记。 2.激光雷达标定 2.1 概述 激光雷达内参标定:内部激光发射器坐标系与雷达本

FUXI_Willard 8027

亚马逊笔试题目_亚马逊在线笔试题目

亚马逊在线笔试题目2小时,两个题目。在线编程,英文题目。当时没做好,完了自己把他们完成了。答案是我自己写的,自己测试没问题,若有错误请指正。Question 1 / 2Question:We have an array representing customer’s shopping records.For example, it’s an array like this:custA, item1...

weixin_39692037的博客 1436

告别WSL:Ollama Windows原生部署与GPU加速实战

本文详细介绍了Ollama在Windows系统上的原生部署与GPU加速实战指南。告别WSL,通过官方原生应用直接调用NVIDIA和AMD显卡,实现更高效的本地大模型运行。文章涵盖系统准备、三步安装、模型拉取运行、GPU性能优化及高级配置,为Windows AI开发者提供一站式解决方案。

prometheus9mon的博客 534

Linux文件操作四剑客

① /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 yyyy-MM-dd / yy-MM-dd 格式。⑥“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮点数。

wuds_158的博客 1610

亚马逊笔试题目_亚马逊笔试题目

亚马逊笔试题目总共两道编程题,全英文描述,时间为两个小时(可以用任何一种语言实现)第一题:对于一个给定的物品名称X以及顾客的购物清单数组,找出所有购买过X的客户中所买的其他的最多的商品种类。如已知购物数组为 [CustA,Item1, CustB,Item2, CustC,Item1, CustA,Item2, CustD,Item3, CustB,Item1] 给定物品名称为Item1时就应该返...

weixin_34551573的博客 2311

通过arcmap制作的第一张流域图

需要知道,识别河流依次需要填洼,流向,流量,栅格计算器,河流链接,河网分级.通过卫星图确定河流入口,在入口处画一个点,注意不要与其他河流相交。随后是进行对河流的筛选使用con函数,筛选流量大于100的河流。我们使用镶嵌工具-->镶嵌至新栅格 将两个数据合并。填洼后如图,随后进行流向的获得.使用流向工具。首先导入准备好的数据,可见两张图片并非一体。教程参考b站up:爱画地图的boney。惊醒栅格河网矢量化,进行河流分级。输入表面栅格数据,等待后如图。本次制作的是双峰县的流域图。输入流向数据,输出后如图。

pianmian1的博客 2229

亚马逊笔试题目_亚马逊笔试题第二弹

笔经面经分享之亚马逊笔试题第二弹。希望通过本帖,能够对正在找工作的同学或者将要找工作的同学提供微薄之力。--小站小编1笔试题下面是来自于亚马逊的编程笔试题,感兴趣的同学可以先自己想想解题思路:Pleaseimplementasimplelogicrule,theinputisasetoflogicformula,theformatislikea1,a2,a3,…...

weixin_39881802的博客 1910

ENVI5.6 Seamless Mosaic多景影像镶嵌色差问题

多景影像无缝镶嵌色差问题拟解决方法

Matchaya的博客 7704

Visual Studio调试技巧与实用方法总结(实战经验分享)

本文根据多年的项目实战经验,详细介绍一些Visual Studio常用的高效调试手段与技巧。

dvlinker的技术专栏 3万+

知识图谱笔试题

知识图谱笔试题目1.Q:列举出知识图谱中可以定义的3种实体,3种关系(本题考察对知识图谱基本定义的理解)A:实体[人类,城市,商品],关系[小明居住在上海,小明买了一箱可口可乐,小明经常喝碳酸饮料]2.Q:有user_info表字段如下[user_id:用户id,Repositories:仓库数量,Stars:Stars数量,Followers:关注他的人们,following:他关注的人们],请...

NONONO 8374

Proteus-51单片机-LCD1602显示DS1302时钟

本文详细介绍了如何使用Proteus仿真51单片机配合LCD1602显示DS1302时钟的步骤,包括DS1302时钟芯片的主要特性、引脚定义、外围电路以及LCD1602的原理和技术参数。此外,还讲解了LCD1602的指令集和显示字符的方法,并给出了初始化及显示操作的步骤。

让你爱上电路设计 6980

Amazon(亚马逊)2014届秋季校园招聘在线笔试题一

思路:题目要求在顾客花掉手中所有n元钱的情况下能够买到最少的商品数,这句话包含2层意思,一是顾客必须正好花掉手中的n元钱,二是在正好花掉手中n元钱的情况下,顾客可能有多种消费方案,要求从这些方案中找出最少商品的方案。解决此题的一种思路如下(以题目中所给示例1为例): 1、 先对商品价格a[a_size]={1、3、4、5}按照降序排列,排序后即为price[a_size]={5、4、3、1};

Sky的专栏 1898

华为OD机试 - 停车场费用统计 - HashSet(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。停车场统计当日总收费,包月的车不统计,不包月的车半个小时收一块钱,不满半小时不收费,如果超过半小时,零头不满半小时按半小时算,每天11:30-13:30时间段不收费,如果一辆车停车时间超过8小时后不收费。现提供停车场进出车辆的统计信息,需要你来计

学Java,找哪吒 238

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

2012 亚马逊在线笔试题目2

amazon online test 亚马逊 在线 考试 题目

大树叶 技术专栏 863

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

亚马逊在线技术笔试题

(1) * 题目:给定一个数组和一个数字,请在这个数组的元素之间添加+-符号,使这个数组元素运算之后的结果是这个数字, *     比如{2,3,4}1 则2+3-4=1输出这样的等式 *     分析:这是亚马逊2013年在线笔试的一道题目,题目不难,应该使用递归来做 *         若数组只有一个元素,则这个元素和最后数字相等,则输出(元素=数字), *         若和最后元素不...

daihaibo1989的博客 6654

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

亚马逊面试被拒

从伦敦面试回来后的第8天,收到了亚马逊HR打来的电话。接电话的时候,我都听得到自己心跳的声音,然后听到那句‘Unfortunately’顿时觉得万念俱灰。后面HR叽里呱啦的说了一堆话,就再也没听进去了。。。虽然这次面试准备了将近两个月,最后还是以失败告终,但是木已成舟,还是好好总结一下吧,希望对以后的面试乃至工作都有帮助。 我这次在伦敦onsite面试的是Amazon Video部门。面试一共分

huangyu20072010的专栏 1万+

名企笔试:Amazon笔试题(Count the elements)

题意: Given two unsorted arrays A, B. They can contain duplicates. For each element in A , count elements less than or equal to it in array B . 给你两个数组A和B,他们可能包含重复的元素,对于每一个在A中元素a,计算在数组B中有多少个数小于或者等于a。 输

机器笨猫 5962

2014亚马逊在线笔试题目

参考http://www.cnblogs.com/jiabei521/p/3348780.html出的题目 1、 题目的意思是   1xN的棋盘上,每个格子有一定的分值,现在有m个卡片,每个卡片上有1~4四种数值,代表走几步,类似小时候的飞行棋游戏,现在有个人站在位置0的初始点,抽取一张卡片,然后根据卡片上的数值向前移动,然后获取移动后人所在的位置的分值,然后累加,求最后所能得到的最大分...

weixin_30341735的博客 203

亚马逊笔试题目_一道亚马逊的在线笔试题

来园子快一年了,从来都是只看看,不说话。一来觉得自己技术太弱,说出来误导别人;二来自己文笔太差,写出来不通就贻笑大方了。之前看到园子有人发了一道面试题,觉得蛮有意思的,鼓起勇气写一篇,让大神们扶正一下,也好促进自己进步!题目描述:规则一:四张牌相同。自然数字大的胜出,比如3,3,3,3 < 6,6,6,6规则二:四张牌连续。当然序列最大的那个胜出。但是有个小trick,A在这里默认表最大牌,...

weixin_39610631的博客 969

C++中的多态性(vptr和vtable)

多态性 (polymorphism) 是面向对象编程的基本特征之一。而在C++ 中,多态性通过虚函数 (virtual function) 来实现。我们来看一段简单的代码: #include using namespace std;class Base{  int a;public:  virtual void fun1() {cout  virtual void fun2() {cout 

大树叶 技术专栏 2524
上一篇: Amazon 笔试 :公共祖先 问题
下一篇: amazon 股票的最佳买入和卖出点
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值