[LeetCode]TwoSum

稜镜实例化
• 阅读 1382

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

1.第一想法

双层for循环

java:

private static int[] twoSumDoubleLoop(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 null;
}

scala:

def twoSumDoubleLoop(nums: Array[Int], target: Int): Array[Int] = {
    for (i <- 0 until nums.length-1; j <- i + 1 until nums.length){
      if (nums(i)+nums(j) == target){
        return Array(i, j)
      }
    }
    throw new Exception("not found@!")
  }

2.第二想法

映射表实现
java:

private static int[] twoSumHashMap(int[] nums, int target) {
    int[] res = new int[2];
    HashMap<Integer, Integer> map = new HashMap<>();
    for (int i = 0; i < nums.length; i++){
        if (map.containsKey(nums[i])){
            res[0] = map.get(nums[i]);
            res[1] = i;
        }
        map.put(target-nums[i], i);
    }
    return res;
}

scala:

def twoSumHashMap(nums:Array[Int], target:Int): Array[Int] = {
    val map = new mutable.HashMap[Int, Int]()
    for (i <- nums.indices){
      if (map.contains(nums(i))){
        return Array(map(nums(i)), i)
      }
//      map(target-nums(i)) = i
      map.+=((target-nums(i),i))
    }
    throw new Exception("not found@!")
  }
点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Leetcode No.39 组合总和
此文转载自:https://blog.csdn.net/jxq0816/article/details/113079141commentBox一、题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字
Stella981 Stella981
3年前
LeetCode 5561. 获取生成数组中的最大值
文章目录1\.题目2\.解题1\.题目给你一个整数n。按下述规则生成一个长度为n1的数组nums:nums00nums11当2<2i<n时,nums2inumsi
Stella981 Stella981
3年前
JavaScript基础知识
题目:1.找出数字数组中最大的元素(使用Math.max函数)2.转化一个数字数组为function数组(每个function都弹出相应的数字)3.给object数组进行排序(排序条件是每个元素对象的属性个数)4.利用JavaScript打印出Fibonacci数(不使用全局变量)5.实现如下语法的功能:vara(5).plus(
Wesley13 Wesley13
3年前
ES6 新增的数组的方法
给定一个数组letlist\//wu:武力zhi:智力{id:1,name:'张飞',wu:97,zhi:10},{id:2,name:'诸葛亮',wu:55,zhi:99},{id:3,name:'赵云',wu:97,zhi:66},{id:4,na
Wesley13 Wesley13
3年前
83. 删除排序链表中的重复元素
题目描述题目地址:https://leetcodecn.com/problems/removeduplicatesfromsortedlist/给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入:112输出:12示例 2:输入:11233输出:
Stella981 Stella981
3年前
LeetCode 230. 二叉搜索树中第K小的元素(Kth Smallest Element in a BST)
题目描述给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设k总是有效的,1≤k≤二叉搜索树元素个数。示例1:输入:root3,1,4,null,2,k13/\14
Wesley13 Wesley13
3年前
67,盛最多水的容器
给定 _n_ 个非负整数 _a_1,_a_2,...,_a_n,每个数代表坐标中的一个点 (_i_, _ai_)。在坐标内画 _n_ 条垂直线,垂直线 _i_ 的两个端点分别为 (_i_, _ai_)和(_i_,0)。找出其中的两条线,使得它们与 _x_ 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 _n_ 的值至少为2。!
Stella981 Stella981
3年前
LeetCode459. 重复的子字符串
1.问题描述给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例1:输入:“abab”输出:True解释:可由子字符串“ab”重复两次构成。示例2:输入:“aba”输出:Fal
Stella981 Stella981
3年前
LeetCode:283.移动零——简单
题目:283.移动零:给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入:0,1,0,3,12输出:1,3,12,0,0说明:1.必须在原数组上操作,不能拷贝额外的数组。2.尽量减少操作
Stella981 Stella981
3年前
Leetcode724:寻找数组的中心索引(java、python3)
寻找数组的中心索引给定一个整数类型的数组nums,请编写一个能够返回数组\\“中心索引”\\的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。
菜园前端 菜园前端
2年前
什么是二分搜索?
原文链接:什么是二分搜索?二分搜索是一种比较高效的搜索算法,但前提必须是有序数组。主要步骤如下:1.从数组的中间元素开始,如果中间元素正好是目标值,则搜索结束2.如果目标值大于或者小于中间元素,则在大于或者小于中间元素的那一半数组中继续二分搜索基础案例时间
稜镜实例化
稜镜实例化
Lv1
为了赞美而去修行,有如被践踏的香花美草。
文章
4
粉丝
0
获赞
0