赞
踩
文档讲解:代码随想录
1. 对每一个字符串用一个字典统计每个字母出现的次数,最后比较两个字典是否key和value都相同。都相同则是有效字母异位词, javascript中如何实现字典的key和value的比较?
2. 这个编程问题可以分解为多个查询问题,涉及到查询,用hash法肯定是最快和简单的,只需要用长度为26,值全为0的数组模拟一个hash表,遍历第一个字符串时查询hash表对应字母然后执行加1操作,然后遍历第二个字符串时查询hash表对应字母执行减1操作,遍历完两个字符串后,循环一次hash表检查是否都为0, 都为0则是有效的字母异位词,同样这种策略也可以用于判断多个字符串是否是有效的字母异位词。
3. 在JavaScript中,不能直接用inputStr[i] - 'a'映射到对应下标,要用inputStr[i].charCodeAt(0) - 'a'.charCodeAt(0),charCodeAt(0)是用来获取ascii码的函数。
4. 感受到了用hash法的简洁,用了一个小时左右,调试花了一些时间,在JavaScript中,不能直接用inputStr[i] - 'a'映射到对应下标,要用inputStr[i].charCodeAt(0) - 'a'.charCodeAt(0),charCodeAt(0)是用来获取ascii码的函数。
文档讲解:代码随想录
1. 遍历第一个数组,对于每一个元素都去第二个数组中查找,如果找到了,就将这个元素保存到结果数组中,同时在第二个数组中将所有对应这个元素值的元素都删除,遍历完第一个数组后返回结果数组。
2. 也利用了hash法在查找元素方面的优点,这里由于元素长度不固定,用数组就不太适合,利用set这个数据结构(底层实现是红黑树,可以用于这种查找元素范围不固定的情况),将第一个数组转为set1,这样就自动完成了去重操作,然后遍历第二个数组,对每一个元素,在set1中执行查询操作,找到了就添加到结果set2中,利用set2完成去重操作,最后将set2转为数组返回。
3. 不知道如何用javascript创建set类型,没有理解这个题用set的原因,利用了hash法在查找元素方面的优点,这里由于元素长度不固定,用数组就不太适合,利用set这个数据结构(底层实现是红黑树,可以用于这种查找元素范围不固定的情况),将第一个数组转为set1,这样就自动完成了去重操作,然后遍历第二个数组,对每一个元素,在set1中执行查询操作,找到了就添加到结果set2中,利用set2完成去重操作,最后将set2转为数组返回。
4,用了一个小时左右,利用set完成去重操作和提高查找效率。
文档讲解:代码随想录
1. 觉得这个题是一个数学问题,不知道咋做,大致知道要用循环提取数字每一位。
2. 循环计算各位的数字平方和的过程中,如果当前计算过的数和之前计算过的数字重复了,那么再进行操作就会陷入无限循环中,确认当前计算过的数是否在之前出现了,这又是一个查找元素的问题,那么又要回归到用哈希法上来,用set保存每次计算得到的各位平方和,然后每次计算出新的各位平方和判断是否在set中出现过,如果出现过,则跳出循环返回false, 如果没有出现过则将当前的各位平方和保存到set中,直到和为1返回true, 这有点像计算机的算力解决一个数学问题,如果和不为1且没有出现重复值时,继续循环,不可能不一直循环下去同时值也不为1。
3.计算各位和的函数没有抽离处理,也没有意识到这是一个可以抽离的公共函数,导致代码比较混乱,定义set的代码写到循环里去了,然后每次都会清空set,没有达到代码的效果。
4, 需要养成好的代码习惯,这个题用了一个小时左右。
文档讲解:代码随想录
1. 两重循环,第二重循环不能用第一层循环的值,判断第一层循环和第二层循环的两个数是否和为target, 如果和为target,则返回下标数组。
2. 还是利用hash法查询元素快的优点,先将第一个数组转为一个map,因为查的是数组元素的值, 所以key就是数组元素的值, 而key对应的value就存放数组元素的下标,然后遍历第二个数组,每次就查询target - nums2[index]的元素是否在set中,如果在,将target - nums2[index]这个值对应的value,和第二次循环的index一起作为一组下标结果返回。
3.不知道javascript中map如何实现、如何获取map元素和设置map元素。利用hash法查询元素快的优点,先将第一个数组转为一个map,因为查的是数组元素的值, 所以key就是数组元素的值, 而key对应的value就存放数组元素的下标,然后遍历第二个数组,每次就查询target - nums2[index]的元素是否在set中,如果在,将target - nums2[index]这个值对应的value,和第二次循环的index一起作为一组下标结果返回。
4.let map = {};map[key]=value;var a = map[key];解题用了一个小时左右。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。