LeetCode题库整理(自学整理)

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)对中。

void clear():用于从Map中删除所有映射。boolean containsKey(Object key):用于返回True如果对于指定的键,则映射存在于映射中。boolean containsValue(Object value):用于在一个或多个键映射到指定值时返回true。boolean isEmpty():用于检查映射是否为空。如果地图为空,则返回true。set entrySet():用于返回哈希映射的set视图。Object get(Object key):用于检索或获取特定键映射的值。Set keySet():用于返回键的设置视图。int size():用于返回Map的大小。Object put(Object key,Object value):用于将键值对的特定映射插入到映射中。putAll(Map M):用于将所有元素从一个Map复制到另一个Map。Object remove(Object key):用于删除Map中任何特定键的值。

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 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注