熊熊出没 发表于 2025-1-16 19:41:11

【leetcode 16】1. 两数之和

原题链接
   方法一:两层for循环方法
class Solution {
    public int[] twoSum(int[] nums, int target) {
      int len=nums.length;
      
      int[] res=new int;
      for(int i=0;i<len;i++){
            for(int j=i+1;j<len;j++){
                if(nums+nums==target){
                  res=i;
                  res=j;
                }
            }
      }
      return res;
    }
}
   什么时间使用哈希法,当我们需要查询一个元素是否出现过,或者一个元素是否在聚集里的时间,就要第一时间想到哈希法。
本题需要一个聚集来存放我们遍历过的元素,然后在遍历数组的时间去询问这个聚集,某元素是否遍历过,也就是 是否出如今这个聚集。
那么我们就应该想到使用哈希法了。
因为本题,我们不仅要知道元素有没有遍历过,还要知道这个元素对应的下标,需要使用 key value结构来存放,key来存元素,value来存下标,那么使用map正合适。
    方法二:使用哈希表
class Solution {
    public int[] twoSum(int[] nums, int target) {
      int[] res=new int;
      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;
            if(map.containsKey(tmp)){
                res=i;
                res=map.get(tmp);
                break;
            }
            map.put(nums,i);
      }
      return res;
    }
}

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【leetcode 16】1. 两数之和