zoukankan      html  css  js  c++  java
  • [LeetCode No.1] 两数之和

    题目

    题解

    题解一:
    很简单,直接暴力解法,两层for循环,不多说

    题解二(官方解法):
    因为是找两数之和为target,且只会有一个解
    要在O(n平方)上优化,显然想到循环一次就得找到解
    又恰好是两数,则可以利用HashMap的key和value,把数组值作为键,数组键作为value
    边循环边判断key中是否存在target-nums[i],若存在 直接找到答案
    若不存在则将nums[i]:i存入map

    代码

    解法一:

    public class Solution_1 {
        public int[] twoSum(int[] nums, int target) {
            
            for (int i = 0; i < nums.length-1; i++) {
                for (int j = i+1 ;j < nums.length; j++){
                    
                    if (nums[i] + nums[j] == target){
                        return new int[]{i,j};
                    }
                }
            }
    
            return new int[0];
        }
    }
    

    解法二:

    public class Solution_2 {
        public int[] twoSum(int[] nums, int target) {
            Map<Integer,Integer> hashMap = new HashMap<>();
    
            for (int i = 0; i < nums.length; i++) {
    
                if (hashMap.containsKey(target - nums[i])){         //若key存在,则找到答案
                    return new int[] {i, hashMap.get(target - nums[i])} ;
                }
    
                hashMap.put(nums[i],i);             //不存在则存入
            }
    
            return new int[0];
        }
    }
    
  • 相关阅读:
    5.CSS的引入方式
    4 CSS文本属性
    3.CSS字体属性
    CSS基础选择器总结
    详细介绍jQuery.outerWidth() 函数具体用法
    highcharts x轴中文刻度太长换行
    css 兼容ie8 rgba()用法
    JavaScript常用定义和方法
    12 个 CSS 高级技巧汇总
    javascript 经典问题汇总
  • 原文地址:https://www.cnblogs.com/Mr-BING/p/14579413.html
Copyright © 2011-2022 走看看