文巾解题 1418. 点菜展示表

Posted 刘文巾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文巾解题 1418. 点菜展示表相关的知识,希望对你有一定的参考价值。

1 题目描述

2 解题思路 

分几步走:

第一步:找到一共几张桌子,一共有几

class Solution(object):
    def displayTable(self, orders):
        """
        :type orders: List[List[str]]
        :rtype: List[List[str]]
        """
        num=set()
        dish=set()
        for i in orders:
            num.add(i[1])
            dish.add(i[2])
        num=list(num)
        dish=list(dish)
        num.sort(key=int)
        dish.sort()
#找出有几张桌子,几道菜
#num,dish
#(['3', '5', '10'], ['Beef Burrito', 'Ceviche', 'Fried Chicken', 'Water'])


        dit_dish2id={}
        for i,d in enumerate(dish):
            dit_dish2id[d]=i+1
        dit_table2id={}
        for i,d in enumerate(num):
            dit_table2id[d]=i+1
#每张桌子每道菜对应返回数组的横纵坐标的下标
#dit_dish2id,dit_table2id
#({'Beef Burrito': 1, 'Ceviche': 2, 'Fried Chicken': 3, 'Water': 4},
# {'3': 1, '5': 2, '10': 3})

        ret=[]
        tmp=['Table']
        tmp.extend(dish)
        ret.append(tmp)
        l_t=len(num)
        l_d=len(dish)
        for i in range(l_t):
            tmp=[num[i]]
            for j in range(l_d):
                tmp.append(0)
            ret.append(tmp)
#生成初始的返回数组
#ret
'''
[['Table', 'Beef Burrito', 'Ceviche', 'Fried Chicken', 'Water'],
 ['3', 0, 0, 0, 0],
 ['5', 0, 0, 0, 0],
 ['10', 0, 0, 0, 0]]
'''

        for i in orders:
            print(i)
            x=dit_table2id[i[1]]
            y=dit_dish2id[i[2]]
            ret[x][y]+=1
        for i in range(len(ret[1:])):
            for j in range(len(ret[0][1:])):
                ret[i+1][j+1]=str(ret[i+1][j+1])
        return(ret)
'''
遍历每一条order,同时把int类型的部分转换成str类型
'''

道菜

第二步:每张桌子,每道菜对应返回的二维数组的横纵坐标的下标

第三步:生成初始的返回数组

第四步:遍历每一条order记录

以上是关于文巾解题 1418. 点菜展示表的主要内容,如果未能解决你的问题,请参考以下文章

[MSTL] lc1418. 点菜展示表(模拟+哈希表)

leetcode-1418-点菜展示表

1418. 点菜展示表

LeetCode 1418. 点菜展示表 / NC103 反转字符串 / NC33 合并有序链表 / NC61两数之和

文巾解题 175. 组合两个表

文巾解题 1179. 重新格式化部门表