【LeetCode】1. two num·两数之和

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 【LeetCode】1. two num·两数之和,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

题目描述

英文版描述

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not use the same element twice. You can return the answer in any order.

英文版地址

leetcode【LeetCode】1. two num·两数之和https://leetcode.com/problems/two-sum/%E2%80%8Bleetcode.com/problems/two-sum/

中文版描述

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9

输出:[0,1]

解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6

输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6

输出:[0,1]

提示

2 <= nums.length <= 104

-109 <= nums[i] <= 109

-109 <= target <= 109

只会存在一个有效答案

中文版地址

力扣【LeetCode】1. two num·两数之和https://leetcode.cn/problems/two-sum/

解题思路

遍历数组,每获取到一个值,再去遍历他后面的值,看是否有值等于目标值减去当前值

解题方法

俺这版

【LeetCode】1. two num·两数之和

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

官方版

查找表法

【LeetCode】1. two num·两数之和

class Solution {
 public int[] twoSum(int[] nums, int target) {
        Map<Integer,Integer> map = new HashMap<>(nums.length);
        map.put(nums[0], 0);
        for(int i=1;i<nums.length;i++){
            int cur = nums[i];
            int needed = target - cur;
            if(map.containsKey(needed)){
                return new int[]{map.get(needed),i};
            }else{
                map.put(cur,i);
            }
        }
        throw new IllegalArgumentException("Can not find!");
    }
}

欢迎有更好方法的同学评论区戳戳☆〜(ゝ。∂)🎉🎉🎉~~~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135426.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!