散列
听风的倾诉
这个作者很懒,什么都没留下…
展开
-
1092 To Buy or Not to Buy(散列)
这类题目也有着常用的套路,写的多了,自然就熟悉了。题目描述如下:题目大致意思:题目可以抽象为:给出两个字符串s1和s2,如果s1中包含s2中的所有的字符,则输出yes,并且输出s1中额外的字符数量,如果s1中没有包含s2中所有的字符,则输出no,并且输出缺少的字符数量。大致思路:这道题给出的时间限制是150ms,最直观的方法是双重for循环,但这个时候一定会有测试用例超过时间限制。可以用一个大小为62的整形数组,将出现的字符用一个函数转化成整数,对应数组的下标,在对s1进行遍历的时候,将出现的原创 2020-10-21 14:59:08 · 333 阅读 · 0 评论 -
1084 Broken Keyboard(散列)
这类题目也有着常用的套路,写的多了,自然就熟悉了。题目描述如下:题目大致意思:这道题跟1050那道题很像,可以抽象为输入两个字符串s1和s2,输出s1-s2。大致思路:如果采用暴力的解题方法,使用两个for循环,仍然会超出时间限制,要使用散列的方法,可以使用一个长度为37的bool型数组,初始为false,对s2遍历,将bool型数组相应的位置置为true,表示该字符未失效。接着对s1进行遍历,如果s1中的字符在s2中未出现过(并且是第一次未出现),则输出该字符。提交结果:提交的代码如下:原创 2020-10-21 09:36:09 · 138 阅读 · 0 评论 -
1050 String Subtraction(散列)
这类题目也有着常用的套路,写的多了,自然就熟悉了。题目描述如下:题目大致意思:题目理解起来很容易,给出两个字符串,s1和s2,输出s1-s2后的字符串,如果使用暴力的方法,这道题回很简单,但时间限制为100ms,如果使用暴力的方法的话,肯定会超出时间限制。大致思路:可以使用一个大小为52的bool型散列数组,对s2中出现大写字母和小写字母进行记录,只要出现过就为true,没有出现过则为false。然后对s1进行遍历,将出现过的字母进行移除。(原先的思路错误,注意不止有大写字母和小写字母,没有认真原创 2020-10-20 22:22:33 · 241 阅读 · 0 评论 -
1041 Be Unique(散列)
这类题目也有着常用的套路,写的多了,自然就熟悉了。题目描述如下:题目大致意思:给出一个整数N,然后紧接着输入n个整数,找出不重复的整数,如果不存在不重复的整数,则输出“None”。大致思路:N的取值可以达到10的5次方,如果采用暴力的方法可能会超出时间限制。提交结果:采用暴力的方法,果然有测试用例超时。尝试进行改进,如何将散列的思想应用在本道题上。可以使用一个大小为数据取值范围的整形数组,初始值设置为0,在输入时,首先将输入的数存在另一个数组中,供后面遍历时使用,在输入时,将输入值作为数组原创 2020-10-20 21:31:35 · 216 阅读 · 0 评论