185 竞赛
Posted zhangzs000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了185 竞赛相关的知识,希望对你有一定的参考价值。
点菜展示表
给你一个数组 orders
,表示客户在餐厅中完成的订单,确切地说, orders[i]=[customerNamei,tableNumberi,foodItemi]
,其中 customerNamei
是客户的姓名,tableNumberi
是客户所在餐桌的桌号,而 foodItemi
是客户点的餐品名称。
请你返回该餐厅的 点菜展示表 。在这张表中,表中第一行为标题,其第一列为餐桌桌号 “Table” ,后面每一列都是按字母顺序排列的餐品名称。接下来每一行中的项则表示每张餐桌订购的相应餐品数量,第一列应当填对应的桌号,后面依次填写下单的餐品数量。
注意:客户姓名不是点菜展示表的一部分。此外,表中的数据行应该按餐桌桌号升序排列。
示例 1:
输入:orders = [["David","3","Ceviche"],["Corina","10","Beef Burrito"],["David","3","Fried Chicken"],["Carla","5","Water"],["Carla","5","Ceviche"],["Rous","3","Ceviche"]] 输出:[["Table","Beef Burrito","Ceviche","Fried Chicken","Water"],["3","0","2","1","0"],["5","0","1","0","1"],["10","1","0","0","0"]] 解释: 点菜展示表如下所示: Table,Beef Burrito,Ceviche,Fried Chicken,Water 3 ,0 ,2 ,1 ,0 5 ,0 ,1 ,0 ,1 10 ,1 ,0 ,0 ,0 对于餐桌 3:David 点了 "Ceviche" 和 "Fried Chicken",而 Rous 点了 "Ceviche" 而餐桌 5:Carla 点了 "Water" 和 "Ceviche" 餐桌 10:Corina 点了 "Beef Burrito"
示例 2:
输入:orders = [["James","12","Fried Chicken"],["Ratesh","12","Fried Chicken"],["Amadeus","12","Fried Chicken"],["Adam","1","Canadian Waffles"],["Brianna","1","Canadian Waffles"]] 输出:[["Table","Canadian Waffles","Fried Chicken"],["1","2","0"],["12","0","3"]] 解释: 对于餐桌 1:Adam 和 Brianna 都点了 "Canadian Waffles" 而餐桌 12:James, Ratesh 和 Amadeus 都点了 "Fried Chicken"
示例 3:
输入:orders = [["Laura","2","Bean Burrito"],["Jhon","2","Beef Burrito"],["Melissa","2","Soda"]] 输出:[["Table","Bean Burrito","Beef Burrito","Soda"],["2","1","1","1"]]
提示:
1 <= orders.length <= 5 * 10^4
orders[i].length == 3
1 <= customerNamei.length, foodItemi.length <= 20
customerNamei
和foodItemi
由大小写英文字母及空格字符‘ ‘
组成。tableNumberi
是1
到500
范围内的整数。
/** * @param {string[][]} orders * @return {string[][]} */ // 菜单排序一直不对号,从网上copy了个排序,不对,又把字符串所有的ascii加起来排序,也不对。其实 arr.sort()就对了,sort默认的排序方式为字母排序。它这个排序规则是区分大小写,按照ascii排序。 // 从网上copy的那个排序,它都转换成小写字母了,ascii自然就变了。 // sort 这个方法只有在比较数字的时候能 通过 a-b 升序排列, // sort 字符串比较的时候只能是 if (a > b) return 1; 进行升序排列 // 因为 如果是字符串的话 相减不会自动类型转换 出现 NAN, NAN, NAN ,就返回了原数组。但是可以 做 大于 和 小于 比较。 var displayTable = function(orders) { const mysort = (arr)=>{ // 为什么单纯的sort 就不行 arr.sort(function(s, t) { // let a; // let b; // for(let i=0; i<s.length; i++){ // a+=s[i].charCodeAt() // } // for(let i=0; i<t.length; i++){ // b+=t[i].charCodeAt() // } // 就是因为网上拷贝的这个排序方法,转了一下小写,结果就懵逼了,不知怎么排序。以为这个排序是对的 let a = s.toLowerCase(); let b = t.toLowerCase(); if (a < b) return -1; if (a > b) return 1; return 0; }) return arr; } let map = new Map(); orders.forEach(([name, id, cai])=>{ if(map.has(id)){ map.get(id).push(cai) }else{ map.set(id, []); map.get(id).push(cai); } }) let allcad = []; for(let [key, val] of map){ allcad.push(...val) } let allcadMap = new Map() allcad.forEach((a)=>{ if(!allcadMap.has(a)){ allcadMap.set(a, 1) } }) allcad = [...allcadMap.keys()]; allcad = mysort(allcad); // allcad // allcad.sort() let m1 = []; for(let [key, val] of map){ let arr = new Array(allcad.length).fill(0); val.forEach(v=>{ let i = allcad.indexOf(v); arr[i]++; }) let mm = [key, ...arr] mm = mm.map((a, index)=>{ if(index>=1) { return ‘‘+a } else { return a } }) m1.push(mm) } m1.sort((a, b)=>a[0]- b[0]); let newArr = ["Table", ...allcad]; m1.unshift(newArr) return m1 };
以上是关于185 竞赛的主要内容,如果未能解决你的问题,请参考以下文章
SHA-3的获胜者:keccak - 在 3GPP TS 35.231FIPS 202 和 SP 800-185 中标准化
Python 和 C++ 下字符串查找速度对比,你觉得Python适合算法竞赛吗
Linux From Scratch(LFS11.0)构建 LFS 系统 - Elfutils-0.185 中的 Libelf
Flutter 做一个类似超级玛丽 (想不起来名字 挺好玩反正)Flutter写个小游戏,欢迎一起撸代码 185行 代码逆天改命