1. Two Sum 两数之和       来源:力扣(LeetCode)
题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例: 给定 nums = [2, 7, 11, 15], target = 9    因为 nums[0] + nums[1] = 2 + 7 = 9   所以返回 [0, 1]
这道题目比较容易想到的是通过暴力搜索求解,但暴力搜索的时间复杂度为 O(n^2)。如果使用哈希的思想,利用Python中list的查询方式,我们可以将复杂度降低到 O(n)。有两个值得注意的地方:
(1). 同样的元素不能重复使用(也就是不能自己加自己)    (2). 给定的数组中可能有相同的元素(比如 [3, 3, 4, 4, 5])
java代码:
public class Solution {
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer, Integer> m = new HashMap<Integer, Integer>();
        int[] res = new int[2];
        for (int i = 0; i < nums.length; ++i) {
            if (m.containsKey(target - nums[i])) {
                res[0] = i;
                res[1] = m.get(target - nums[i]);
                break;
            }
            m.put(nums[i], i);
        }
        return res;
    }
}

HashMap是Java中集合的一部分。它提供了Java的Map接口的基本实现。它将数据存储在(Key,Value)对中。

python代码:
class Solution:

def twoSum(self, nums: List[int], target: int) -> List[int]:

        numsMap = {}
        for index,num in enumerate(nums):
            tmpDiff = target-num
            if tmpDiff in numsMap.keys():
                return [numsMap[tmpDiff],index]
            numsMap[num] = index
        return None 

最新文章

  1. 一步步学习javascript基础篇(1):基本概念
  2. CSS伪选择器的使用-遁地龙卷风
  3. 改int非空自增列为int可为空列
  4. JS 获取 本周、本月、本季度、本年、上月、上周、上季度、去年
  5. HDFS权限问题
  6. 【第七篇】bootstrap的3级菜单样式,支持母版页保留打开状态
  7. ACCSESS数据库导入到SQL SEVERES2005
  8. Objective-C priority queue
  9. 无需Visual Studio,5容易的 - 分为报告
  10. magento获取ip地址
  11. ajax--2017年1月15日
  12. EF批量插入(转)
  13. Android百分比布局成功导入及简单使用
  14. OAuth2.0 原理简介
  15. shell脚本遍历子目录
  16. 【刷题】LOJ 6010 「网络流 24 题」数字梯形
  17. C#语法基础
  18. springboot-13-junitTest
  19. ActiveMQ专题1: 入门实例
  20. 【BZOJ】3771: Triple FTT+生成函数

热门文章

  1. Vue基础框架
  2. .NET使用本地outlook客户端发送邮件
  3. a标使用window.open()方法
  4. 【设计模式】Prototype
  5. Oracle 11G空表无法导出处理
  6. django更换ORM连接处理(连接池)转
  7. k8s Ingress和ingress控制器
  8. Java数据库连接组件C3P0和DBCP
  9. Git学习笔记4-分支
  10. Centos 7 下yum搭建lnmp环境(yum安装方式)