Java习题中 哈希表的理论 & 有效的字母异位词 & 快乐数 & 两数之和

关于 哈希表的理论
  • 今天最大的疑惑好像就是map的复杂度怎么算哈哈,一般n个元素map的复杂度就是On哦,不需要想得太复杂了,冲突的空间并不会造成一个量级,改变n前面的常数不会影响空间复杂度哈
  • 提醒!熟悉好map,set的API哦

关于 有效的字母异位词
  • 为什么遍历第二个字符串时只考虑碰到计数小于0的情况返回false而不考虑大于0的情况(即s字符串出现了t字符串中没有的字符)?
    最开始会判断两个字符串长度是否相等,在两个字符串长度相同的情况下,如果有大于0的情况,一定对应地会出现其他字符小于0。
  • python中 record = [0] *26 为什么不能写成record=[ ]*26
    要初始化为0或者其他任何数字也行,不填的话编译器应该不知道原来的数字是多少

关于 快乐数
  • sum重复出现,就肯定不是快乐数,为什么呢?
    因为只要重复出现一次就说明会无限循环,就像之前链表那个环,假设a1算完等于a2,a2算完等于a3,a3算完等于a1,那么下一次a1算完必定等于a2,再下一次a2算完必定是a3,形成了一个循环,而这个循环中不可能有1,因为1平方的结果永远是1,所以肯定有循环就肯定不是快乐数,是快乐数就肯定没有循环
  • 本题的代码随想录中的 js 示例代码用的map,其实效果和set都是一样的,都是标识某个数是否出现过,map的键也是唯一的。正如Java中,HashSet 和 LinkedHashSet 是基于 HashMap 实现的,而 TreeSet 是基于TreeMap实现的。这些map类都是用散列表或者红黑树来存储键值对的数据结构。
  • 关于本题的时间复杂度,计算方式与一般题目略有不同:

关于 两数之和
  • 一般说数组作为哈希表 是利用值作为数组下标来达到快速定位 所以查找也能达到O(1)的复杂度 但是适用范围很有限
  • 用unordered_map不是不能存储两个相同的key吗,那如果数组里两个出现相同的两个元素都要存储会怎么样呢?
    注意它存入的方式,它是在循环的过程中边检验边存的,如果没有对应的数字就存入map,如果有就计数,这样不会遇到重复的
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

念君思宁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值