LeetCode hot100 题:1-3 解题思路

1 两数之和

思路:

获取target与当前数值的差,在数组中的什么位置。用一个hash表来存储数组中的数值与其下表即可。

核心代码方法:

hash表的创建 :Map<Integer, Integer> hb = new HashMap<Integer, Integer>();

hash表中是否包含元素:hb.containsKey(key);

hash表添加:hb.put();

一个数组初始化方法:new int[]{hb.get(target-nums[i]), i}

2 将包含相同单词的字母的不同组合放在一个列表中

思路:

将字符串里面的字符进行排序,如果其组合相同,那么其排序后的字符串一定相同(找到所有相同字母,组合不同的单词)

因此可以将这个字符串作为hash表的key,对应的单词作为value进行储存(如何将具有相同单词,组合不同的单词放在一起,那么需要一个hash表)

核心代码及对应方法:

将字符串转化为字符数组,char[] chars = str.toCharArray();

对数组字符进行排序:Arrays.sort(chars);

最后将排序后的数组转化为字符串:String str_s = String.valueOf(chars);

列表申明:ArrayList<String> stris = new ArrayList<>();

列表添加:stris.add(str);

嵌套列表的一种初始化方式:List<List<String>> res = new ArrayList<>(hashMap.values());

3 找出数组中的最长连续字串(其数组下表不要求连续)

思路:

找出每个对应数字的连续长度,剪枝(如果这个数字不是开头直接跳过,只遍历以这个数开头的最大连续字符串即可),遍历是否存在(使用hashset进行存储)。

核心代码:

hashset声明:Set<Integer> hs = new HashSet<Integer>();

hashset添加:hs.add(nums[i]);

hashset是否包含某元素:hs.contains(nums[i]-1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值