华为二面代码
进来手撕了一个题,然后也没问技术,乱七八糟问了一通,把题记录一下,大家可以参考。
-------------------------------------------------------------------------------------------
示例 2:VendingMachineSystem obj = new VendingMachineSystem(2, 5);System.out.println(obj.addProduct(3, new int[]{3, 5, 4, 6, 2, 1})); // falseSystem.out.println(obj.addProduct(3, new int[]{3, 5, 4, 6, 2}));// trueSystem.out.println(obj.addProduct(1, new int[]{9}));// trueSystem.out.println(obj.addProduct(2, new int[]{7}));// falseSystem.out.println(obj.buyProduct(3, 3));// 3,5,4System.out.println(obj.buyProduct(9, 3));// 空System.out.println(obj.buyProduct(3, 3));// 空System.out.println(obj.queryProduct());// 9,6System.out.println(obj.addProduct(3, new int[]{10, 20, 13, 14}));// falseSystem.out.println(obj.addProduct(3, new int[]{10, 20, 13}));;// trueSystem.out.println(obj.buyProduct(3, 5));// 6,2,10,20,13System.out.println(obj.addProduct(9, new int[]{5, 4}));// true
请设计一款自动售货机的进出货管理系统 VendingMachineSystem(),需实现以下功能: · VendingMachineSystem(int trayNum, int trayCapacity):设置该自动售货机上共有 trayNum 个商品轨道,每个商品轨道上最多可放置 trayCapacity 个商品。
o 每个轨道上只能放置同一品牌的商品;同一品牌的商品只能放置在一个轨道上;
o 对于已售空的轨道可以加入某一品牌的商品,即不一定是原品牌。
· addProduct(int brandId, int[] productIdList):向系统中添加商品,品牌为 brandId ,商品编号为 productIdList ,从所在轨道的末端商品之后按数组 productIdList 下标升序依次放入。
o 售货机内已有该品牌的商品:若所在轨道剩余空间充足,则放入商品并返回 true ;否则不做任何操作并返回 false ;
o 售货机内没有该品牌商品:若售货机内有空轨道,且该轨道空间充足,则放入商品并返回 true ;否则不做任何操作并返回 false 。
· buyProduct(int brandId, int num):购买品牌为 brandId 的 num 个商品。
o 若有足够的商品,则取该轨道上前 num 个商品并返回其商品编号列表;
o 若没有该品牌商品,或该商品数量不足 num 个,则不做任何操作并返回空数组 []。
· queryProduct():按照品牌编号升序返回每个品牌的首个商品编号(忽略空轨道);若售货机为空,返回空数组 []。
提示: 1 <= addProduct, buyProduct, queryProduct 总操作数 <= 1000
1 <= trayNum <= 100
1 <= trayCapacity <= 100
1 <= brandId <= 200
1 <= productIdList.length <= 100
1 <= productIdList[i] <= 10^5
1 <= num <= 100
#华为面经#