代码随想录算法训练营第六天|哈希表 242、349、202、1

242:

代码随想录

是之前做过的一道题,记得用字母的ascii码来计算在数据结构里的位置然后记录出现次数的做法,但是具体的实现有点忘了。一开始还想复杂了想用个哈希表来做,后面才意识到直接用一个有26个位置的数组就可以。思路出来之后代码可以比较轻松地写出来。

349:

代码随想录

温习了一下set的基础知识,但一开始还是没有思路。总想着同时遍历两个数组+比较,然后就陷入了暴力解法的思路里。看了一点题解,了解到可以通过把数组里的元素放进set里利用set的无重复特性进行比较,但是很快又被只用了一个set给卡住了。

初始的想法是通过用一个set记录数组1,然后遍历数组2跟set作比较,遇到数组2里没有但set里面有的元素就把它remove,反之则继续遍历。但这个方法的问题就在于如果数组2本身就是数组1的子集,那remove的条件就不会触发,从而无法移除多余的元素。

又思考了15分钟无解,遂看题解:原来是通过用两个set,第一个存放数组1的元素,第二个存放用set1和数组2比较后两边都有的元素,形成一个result set,最后建立一个新数组来return result set里的元素。

202:

代码随想录

这题不看题解的话很容易陷入尝试解决数学问题的坑里。明确了false的条件是不能碰到重复数进入循环之后思路就会清晰很多。重点是要写对求各个位数的平方和的方法和在主方法里更新n来让程序计算新数字。不然就会重复计算第一个数然后在第二次循环时必定return false。

1:

代码随想录

之前用哈希表的方法做过一次,但这次做下来感觉还是没完全理解。

这次一开始是想用哈希表的key来存放遍历过的元素,但是没有想清楚value应该放什么。首先是用value来统计元素出现的次数,然后再在遍历的过程中找哈希表中有没有 target - nums[i] 的结果,但这样就无法记录题目所需要的元素的下标。

看到题解里的“用value来记录元素在数组中的下标”之后一下子就豁然开朗了。

本想着今天的前三道题能提供一些insight,但举一反三失败了,还需再接再厉。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值