文章目录
T1 两数之和
链接:1. 两数之和
题目:
【刷题感悟】这道题用两层for循环也能做出来,但我们还是要挑战一下时间复杂度小于
O
(
n
2
)
O(n^2)
O(n2)的解法,不能因为它是第一道 而且还是简单题就不做,题目还是常做常新的,从中挖掘新的学习点也是一个一件很有价值的事情。
代码:
publicint[]twoSum(int[] nums,int target){Map<Integer,Integer> indexValueMap =newHashMap<>();for(int ii =0; ii < nums.length; ii++){// 把数值作为key,下标作为value好一点,因为value比key方便获取而且题目最终是希望我们返回数组下标if(indexValueMap.containsKey(target - nums[ii])){// 初始化数组的方法returnnewint[]{ii, indexValueMap.get(target - nums[ii])};}
indexValueMap.put(nums[ii], ii);}// 返回一个空数组returnnewint[]{};}
T49 字母异位词分组
链接:49. 字母异位词分组
题目:
代码:
publicList<List<String>>groupAnagrams(String[] strs){// 1. Map<String, String> -> Map<单词字典序, 单词>// 博客:将一个字符串转成字典序排列的字符串(有点想复杂了)// Step1: 收集异位词Map<String,List<String>> map =newHashMap<>();for(String str : strs){String sortedString =getSortedString(str);if(map.containsKey(sortedString)){List<String> wordList = map.get(sortedString);
wordList.add(str);
map.put(sortedString, wordList);continue;}// 初始化数组的方法
map.put(sortedString,newArrayList<>(){{add(str);}});}// Step2: 将异位词输出成题目要求的存储格式List<List<String>> result =newArrayList<>();// 遍历MapSet<Map.Entry<String,List<String>>> wordEntrySet = map.entrySet();
wordEntrySet.forEach(entrySet -> result.add(entrySet.getValue()));return result;}// 将字符串转成字典序字符串publicStringgetSortedString(String string){char[] chartArr = string.toCharArray();Arrays.sort(chartArr);// 按字典序排列returnString.valueOf(chartArr);// char数组转成字符串}
常用小技巧
初始化数组的方法
newint[]{1,2};
初始化List的方法
newArrayList<>(){{// 两层括号add(str);}};
将字符串转换成它的字典序字符串
char[] chartArr = string.toCharArray();// 先把字符串转成char数组Arrays.sort(chartArr);// 按字典序排列returnString.valueOf(chartArr);// char数组转成字符串
遍历map
// 1. 先把map的entrySet赋值给一个SetSet<Map.Entry<String,List<String>>> wordEntrySet = map.entrySet();// 2. 再用Lambda表达式遍历set
wordEntrySet.forEach(entrySet -> result.add(entrySet.getValue()));
本文转载自: https://blog.csdn.net/weixin_44779122/article/details/137216558
版权归原作者 小芒果dd 所有, 如有侵权,请联系我们删除。
版权归原作者 小芒果dd 所有, 如有侵权,请联系我们删除。