天津电商网站开发,西安中高风险地区,手工制作会动的玩具,上海app网络推广公司电话文章目录 T1 两数之和T49 字母异位词分组常用小技巧 T1 两数之和
链接#xff1a;1. 两数之和 题目#xff1a;
【刷题感悟】这道题用两层for循环也能做出来#xff0c;但我们还是要挑战一下时间复杂度小于 O ( n 2 ) O(n^2) O(n2)的解法#xff0c;不能因为它是第一道 … 文章目录 T1 两数之和T49 字母异位词分组常用小技巧 T1 两数之和
链接1. 两数之和 题目
【刷题感悟】这道题用两层for循环也能做出来但我们还是要挑战一下时间复杂度小于 O ( n 2 ) O(n^2) O(n2)的解法不能因为它是第一道 而且还是简单题就不做题目还是常做常新的从中挖掘新的学习点也是一个一件很有价值的事情。
代码 public int[] twoSum(int[] nums, int target) {MapInteger, Integer indexValueMap new HashMap();for (int ii 0; ii nums.length; ii) {// 把数值作为key下标作为value好一点因为value比key方便获取而且题目最终是希望我们返回数组下标if (indexValueMap.containsKey(target - nums[ii])) {// 初始化数组的方法return new int[] {ii, indexValueMap.get(target - nums[ii])};}indexValueMap.put(nums[ii], ii);}// 返回一个空数组return new int[] {};}T49 字母异位词分组
链接49. 字母异位词分组 题目 代码 public ListListString groupAnagrams(String[] strs) {// 1. MapString, String - Map单词字典序, 单词// 博客将一个字符串转成字典序排列的字符串(有点想复杂了)// Step1: 收集异位词MapString, ListString map new HashMap();for (String str : strs) {String sortedString getSortedString(str);if (map.containsKey(sortedString)) {ListString wordList map.get(sortedString);wordList.add(str);map.put(sortedString, wordList);continue;}// 初始化数组的方法map.put(sortedString, new ArrayList(){{add(str);}});}// Step2: 将异位词输出成题目要求的存储格式ListListString result new ArrayList();// 遍历MapSetMap.EntryString, ListString wordEntrySet map.entrySet();wordEntrySet.forEach(entrySet - result.add(entrySet.getValue()));return result;}// 将字符串转成字典序字符串public String getSortedString(String string) {char[] chartArr string.toCharArray();Arrays.sort(chartArr); // 按字典序排列return String.valueOf(chartArr); // char数组转成字符串}常用小技巧
初始化数组的方法
new int[] {1, 2};初始化List的方法
new ArrayList(){{ // 两层括号add(str);
}};将字符串转换成它的字典序字符串
char[] chartArr string.toCharArray(); // 先把字符串转成char数组
Arrays.sort(chartArr); // 按字典序排列
return String.valueOf(chartArr); // char数组转成字符串遍历map
// 1. 先把map的entrySet赋值给一个Set
SetMap.EntryString, ListString wordEntrySet map.entrySet();
// 2. 再用Lambda表达式遍历set
wordEntrySet.forEach(entrySet - result.add(entrySet.getValue()));