zoukankan      html  css  js  c++  java
  • leetcode中的two sum问题解决方法

    不得不说,水平还是太菜,最先使用的是两个for循环,直接暴力解题,虽然得到了结果,但是网上已经有人说了暴力解题过不了,所以只能寻求另外的解决方法。偶然看到网友提到可以用hashmap来解决,所以就上网查找hashmap的使用方法,因为之前没有接触过。。。。终于将这道题给攻破了,哈哈哈,好开心。

    import java.util.HashMap;
    
    public class TwoSum {
        public static int[] twoSum(int[] nums,int target) {
            HashMap<Integer,Integer> m = new HashMap<Integer,Integer>();//创建一个hashmap对象
            int []res = new int[2];//创建存放数组下标的数组
            for(int i = 0; i < nums.length;++i) {//循环    
                if(m.containsKey(target - nums[i])) {//判断数组中是否存在和target-nums[i]的值,存在则
                    res[0] = i;
                    res[1] = m.get(target - nums[i]);
                    break;
                }
                m.put(nums[i], i);//将数组中的值和下标添加到hashmap中
            }
            return res;
        }    
        public static void main(String[] args) {
            int[] s = {2,5,8,9};
            int[] re = twoSum(s,7);
            System.out.println("re1=" + re[0] + ",re2=" + re[1]);//输出下标
        }
    }

    写出来之前,本人是将

    m.put(nums[i], i);//将数组中的值和下标添加到hashmap中

    这句放在循环之前,然后用另一个循环将sums的值一个个先放进去,虽然测试的时候没有 出现问题,但是没有考虑到数组中同一个数字之和的情况,所以提交的时候出现了解答错误的情况,所以只能将代码放在for循环里面,进来一个先看是不是和target-sums[i]相等,再将这个数和下标放到hashmap 中,这样就不会出现上面的那个问题。

  • 相关阅读:
    python 远程 部署和运行
    学习笔记——UML类图
    Core Data 多线程操作实战篇
    Core Data系列六——Custom Migration
    Core Data系列五——数据迁移方案
    NSOperation以及NSOperationQueue的使用
    Magical Record设计小谈
    Core Data系列四——多线程设计
    Core Data系列三——基本使用
    Core Data系列二——基础概念
  • 原文地址:https://www.cnblogs.com/hairy/p/8950136.html
Copyright © 2011-2022 走看看