网站验收指标网页浏览历史记录在哪
news/
2025/9/23 17:17:54/
文章来源:
网站验收指标,网页浏览历史记录在哪,广州市外贸网站建设品牌,做网站一般字号要做多少目录 1. 两数之和题目描述做题思路参考代码 49.字母异位词分组题目描述做题思路参考代码 128. 最长连续序列题目描述做题思路参考代码 1. 两数之和
题目描述
给定一个整数数组 nums 和一个整数目标值 target#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数… 目录 1. 两数之和题目描述做题思路参考代码 49.字母异位词分组题目描述做题思路参考代码 128. 最长连续序列题目描述做题思路参考代码 1. 两数之和
题目描述
给定一个整数数组 nums 和一个整数目标值 target请你在该数组中找出 和为目标值 target 的那 两个 整数并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1
输入nums [2,7,11,15], target 9
输出[0,1]
解释因为 nums[0] nums[1] 9 返回 [0, 1] 。示例 2
输入nums [3,2,4], target 6
输出[1,2]示例 3
输入nums [3,3], target 6
输出[0,1]提示
2 nums.length 104-109 nums[i] 109-109 target 109只会存在一个有效答案
进阶 你可以想出一个时间复杂度小于 O(n2) 的算法吗
做题思路
使用HashMapkey为元素value为下标
参考代码
package hot100;import java.util.HashMap;
public class _0001_TwoSum {public int[] twoSum(int[] nums, int target) {HashMapInteger, Integer map new HashMap();//key为数value为下标for(int i 0; i nums.length; i){int choose nums[i];//当前元素int diff target - choose;//diff为目标和与当前元素之差即要找的另一个元素if(map.containsKey(diff)){//如果map中存在diffreturn new int[]{map.get(diff),i};//返回结果}map.put(choose, i);//否则添加元素}return new int[0];//返回空}
}49.字母异位词分组
题目描述
给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs [eat, tea, tan, ate, nat, bat]
输出: [[bat],[nat,tan],[ate,eat,tea]]示例 2:
输入: strs []
输出: [[]]示例 3:
输入: strs [a]
输出: [[a]]提示
1 strs.length 1040 strs[i].length 100strs[i] 仅包含小写字母
做题思路
使用HashMap将所有字符串按照字典序排序那么每一组字母异位词将排序成同一个字符串key为排序后的字符串value为所有符合条件的字母异位词
参考代码
package hot100;import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;public class _0049_GroupAnagrams {public ListListString groupAnagrams(String[] strs) {HashMapString, ListString map new HashMap();//key为字典序字符串value为所有满足结果字符串集合for (String str : strs) {char[] chars str.toCharArray();//字符串转化为字符数组Arrays.sort(chars);//排序String sortKeys new String(chars);//将排序后的字符数组转回字符串if (map.containsKey(sortKeys)) {//如果map中有keymap.get(sortKeys).add(str);//添加原字符串} else {//如果map中没有keyListString s new ArrayList();//新建Lists.add(str);//添加原字符串map.put(sortKeys, s);//添加原字符串}}return new ArrayList(map.values());//打印map中所有values}
}128. 最长连续序列
题目描述
给定一个未排序的整数数组 nums 找出数字连续的最长序列不要求序列元素在原数组中连续的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
示例 1
输入nums [100,4,200,1,3,2]
输出4
解释最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2
输入nums [0,3,7,2,5,8,4,6,0,1]
输出9提示
0 nums.length 105-109 nums[i] 109
做题思路
每一个连续数列都存在头结点和尾结点本题关键在于如何判断头尾节点。
参考代码
package hot100;import java.util.HashSet;public class _0128_LongestConsecutiveSequence {public int longestConsecutive(int[] nums) {HashSetInteger set new HashSet();for(int n : nums){set.add(n);}int count 0;//计数int res 0;//结果for(int n : set){if(!set.contains(n-1)){//如果当前元素n是头节点那么n-1不在set中int curr n;//指针count 1;//计数//开始向后遍历while(set.contains(curr1)){//如果当前元素n为中节点那么n1在set中count;//计数1curr;//指针右移}//如果当前元素n为尾节点那么n1不在set中即while循环跳出res Math.max(res, count);//结果取最大值}}return res;}}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913288.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!