• 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 中,这样就不会出现上面的那个问题。

  • 相关阅读:
    团队二阶段冲刺个人工作总结9
    团队二阶段冲刺个人工作总结8
    团队二阶段冲刺个人工作总结7
    团队二阶段冲刺个人工作总结6
    PSP总结报告
    第十三周例行报告
    对团队成员公开感谢博客
    附加作业 软件工程原则的应用实例分析
    第十二周例行报告
    第十一周例行报告
  • 原文地址:https://www.cnblogs.com/hairy/p/8950136.html
Copyright © 2020-2023  润新知