给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
一看到这种出现频率最高的k个数字这种题目,就会想到key-value pair,就自然想到map,然后就可以使用map来做。
所以我需要做的就是两步:第一步,将元素插入map中,元素值为key,出现次数为value。第二步,将map按照value进行降序排序。
由于我们没办法使用sort直接对map进行排序,这一点之前也说过,所以依旧是将其转换为一个vector,然后进行排序,只不过我这里使用lambda函数。
最后,将map前k项的key值push到result即可。
给定一个经过编码的字符串,返回它解码后的字符串。
你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。
此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。
这个题其实之前在做某次笔试的时候遇到过更复杂的,但是这里简单多了。利用两个栈,一个栈num用来存放存储的数字,一个栈str用来存放字符串,当识别到[的时候,将数字和前面以后的字母分别push进入两个栈,然后遇到]的时候,pop出数字,这个数字就对应着str中最上面的字符串重复的次数。