ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

cpp算法题目整理——哈希表篇

cpp算法题目整理——哈希表篇 字符统计题目描述给定一个只包含大写字母的字符出 SS, 请你输出其中出现次数最多的字符。如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。解题思路直接用哈希表unordered_mapchar,int m将字符本身作为key将出现的次数作为value然后遍历整个哈希表寻找value最大的每次都可以将最大的value对应的字符塞入一个新的vector中然后要记得clear这样保证vector中只有最大次数的字符相等的情况就直接插入。字符串统计题目描述给定 N 个字符串 S1,S2,...,SN请问其中有多少种不同的字符串。解题思路将每次输入的字符串塞入map中字符串作为key次数为1作为value然后遍历整个map并累加所有value值即可这里的关键主要是将出现的次数都设为1而不是累加。2006题目描述The input contains data for several test cases.Each case contains a single even integer, which is less than 2007, indicate the number of teams in a group.and n-1 lines followed, indicate the match table.each line indicate one round in the contest.For example,41-2 3-4 // the first round1-3 2-4 // the second round1-4 2-3 // the third round解题思路直接把每组的对局作为key存入哈希表出现的次数都为1如果是正确的那所有对局的次数加起来应该为ans n*(n-1)/2如果有某个对局出现了两次或者多次那最终加起来的结果就会小于ans对应输出no即可如果满足次数与理论次数相等输出yes即可。异常频率题目描述给定乐乐一个由 N 个整数组成的数组。除了一个值之外每个不同的值出现的次数相同。现在他要找到这个值。请注意数组中至少有 3 个不同的值。解题思路首先将数字存入哈希表unordered_mapint,int m; 用数字作为key出现的次数作为value然后定义三个m的迭代器it1,it2,it3分别代表哈希表中前三个迭代器可以用next(it,1)实现向前累加然后比较这三个迭代器的second值如果1 2 || 1 3那就说明1就是我们要的正常的频次否则2 3 那么2或3就是我们要的频次然后找到之后去遍历整个哈希表看看哪个second值不等于我们的正常频次然后直接输出对应的first值即可。费里的语言题目描述小发明家弗里想创造一种新的语言众所周知发明一门语言是非常困难的首先你就要克服一个困难就是有大量的单词需要处理现在弗里求助你帮他写一款程序判断是否出现重复的两个单词。解题思路这个题目我们采用unordered_setstring s哈希表直接采取边输入边检查的策略对于每个输入的string x用s.count(x)count是用来查找set中有没有这个元素有则返回1无则返回0来查找是否存在后边接着将这个元素插入s中如果这个元素第二次出现那就会被查到然后直接结束掉循环并输出这个字符串即可如果循环正常遍历完则说明没有重复的字符串输出no即可。
返回列表