IT评测·应用市场-qidao123.com
标题:
【leetcode 16】1. 两数之和
[打印本页]
作者:
熊熊出没
时间:
2025-1-16 19:41
标题:
【leetcode 16】1. 两数之和
原题链接
方法一:两层for循环方法
class Solution {
public int[] twoSum(int[] nums, int target) {
int len=nums.length;
int[] res=new int[2];
for(int i=0;i<len;i++){
for(int j=i+1;j<len;j++){
if(nums[i]+nums[j]==target){
res[0]=i;
res[1]=j;
}
}
}
return res;
}
}
复制代码
什么时间使用哈希法,当我们需要查询一个元素是否出现过,或者一个元素是否在聚集里的时间,就要第一时间想到哈希法。
本题需要一个聚集来存放我们遍历过的元素,然后在遍历数组的时间去询问这个聚集,某元素是否遍历过,也就是 是否出如今这个聚集。
那么我们就应该想到使用哈希法了。
因为本题,我们不仅要知道元素有没有遍历过,还要知道这个元素对应的下标,
需要使用 key value结构来存放,key来存元素,value来存下标,那么使用map正合适。
方法二:使用哈希表
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] res=new int[2];
if(nums==null||nums.length==0){
return res;
}
Map<Integer,Integer>map=new HashMap<>();
for(int i=0;i<nums.length;i++){
int tmp=target-nums[i];
if(map.containsKey(tmp)){
res[0]=i;
res[1]=map.get(tmp);
break;
}
map.put(nums[i],i);
}
return res;
}
}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4