Java哈希表学习教程:https://www.runoob.com/java/java-hashmap.html?ivk_sa=1024320u
什么时候使用哈希法,当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。
454.四数相加II
今日学习的文章链接:https://programmercarl.com/0454.%E5%9B%9B%E6%95%B0%E7%9B%B8%E5%8A%A0II.html
自己看到题目的第一想法:用一个HashMap<Integer,int[]>来存放前两个数组的和以及下标,再遍历后两个数组看是否有和为0的
看完代码随想录之后的想法:我的第一想法存在问题,应该是记录和出现的次数而不是下标,因为下标有可能互换而和仍相等,这样计算出来的结果就偏少了
遇到的困难:getOrDefalut方法能写起来更简便
383. 赎金信
今日学习的文章链接:https://programmercarl.com/0383.%E8%B5%8E%E9%87%91%E4%BF%A1.html
自己看到题目的第一想法:用HashMap实现,但是在key,value的设置上出现了一些问题
看完代码随想录之后的想法:建一个长度为26的数组实现
遇到的困难:
15. 三数之和
今日学习的文章链接:https://programmercarl.com/0015.%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.html
自己看到题目的第一想法:用HashMap实现,但实现起来过于麻烦
看完代码随想录之后的想法:i,j,k三个指针不重叠遍历整个数组,并且他们自身所走过的数不能相同
遇到的困难:jk指针的更新要注意去重。本题总体难度较大,记得二刷
18. 四数之和
今日学习的文章链接:https://programmercarl.com/0018.%E5%9B%9B%E6%95%B0%E4%B9%8B%E5%92%8C.html
自己看到题目的第一想法:两层循环,和15.三数之和类似
看完代码随想录之后的想法:双指针法两重循环
遇到的困难:不要判断nums[k] > target 就返回了,比如:数组是[-4, -3, -2, -1],target是-10,不能因为-4 > -10而跳过。但是我们依旧可以去做剪枝,逻辑变成nums[i] > target && (nums[i] >=0 || target >= 0)就可以了。
今天学习时长近五小时,最后两题较难,其中有几题需要二刷。