1. two-sum

本系列是自己刷 LeetCode (语言为:Java)的记录。解题思路不保证都是本人自己想到的,但是可以保证均为本人验证过并且是正确的解法。

题目:
给出一个整数数组,两个数相加满足指定数,返回这两个数在数组中的索引。
其他条件:
1.假定只有一个答案。2.同一项不能重复使用。

解法1:双循环,满足条件时返回循环的索引。注意:因为条件1,所以内循环从 i + 1 开始。

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

该解法:时间复杂度为 O(n2)。

解法2:使用 HashMap(哈希表),将数组中的值作为key,值对应的 index 作为 value 放入map中。

Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++) {
    int complate = target - nums[i];
    if(map.containsKey(complate)) {
        return new int[]{i, map.get(complate)};
    }
    map.put(nums[i], i);
}

该解法:时间复杂度为 O(n)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 既然决定开始写博客,那么就先从最简单的开始写起。鉴于上次失败的面试经历,也为了补全巩固自己的数据结构和算法等的知识...
    假装文艺青年的猥琐大叔阅读 3,196评论 0 0
  • Two Sum 题目描述 Given an array of integers, return indices o...
    Hehe丶阅读 2,707评论 0 0
  • 哈哈哈哈 大名鼎鼎的 two-sum ,搜索引擎上搜leetcode ,后面匹配的绝对有two -sum,作为le...
    namelessEcho阅读 1,387评论 0 0
  • Given an array of integers, return indices of the two num...
    stevewang阅读 2,361评论 0 1
  • 虹 天空怀有无限细腻 在深心处带有多情 有时流下的眼泪 不知是幸福还是悲伤 眼泪是相互珍惜 ...
    陈汐年阅读 4,294评论 2 8

友情链接更多精彩内容