1.两个列表的最小索引总和
假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。
你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。如果答案不止一个,输出所有答案。
2.错误的集合
集合S包含从1到n的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。
给定一个数组nums代表了集合S发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
思路:类似于bitmap
3.员工的重要性
给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度和直系下属的id。
现在输入一个公司的所有员工信息,以及单个员工id,返回这个员工和他所有下属的重要度之和。
4.词典中最长的单词
给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。
思路:set可以实现自动去重,排序
string longestWord(vector<string>& words) {
string res = "";
sort(words.begin(), words.end());
unordered_set<string> s;
for(int i = 0; i < words.size(); i++)
{
if(words[i].length() == 1 || s.count(words[i].substr(0, words[i].length() - 1)))
{
res = res.size() < words[i].size() ? words[i] : res;
s.insert(words[i]);
}
}
return res;
}
5.最短完整词
如果单词列表words中的一个单词包含牌照licensePlate中的所有字母,那么我们称之为完整词。在所有完整词中,最短的单词我们称之为最短完整词。单词在匹配牌照中的字母时不区分大小写。保证一定存在一个最短完整词。当有多个单词都符合最短完整词的匹配条件时取单词列表中最靠前的一个。