[算法LeetCode笔记(Rust,Go,Python,JS实现)]LeetCode之01-两数之和

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BaiHuaXiu123/article/details/88540304

题目

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

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

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

思路

思路1.采用hash结构求解
思路2.利用双层循环求解

Rust实现

impl Solution {
    pub fn two_sum(nums: Vec<i32>, target: i32) -> Vec<i32> {
        let mut rev =vec![-1i32;2];
        for i in 0..nums.len()  {
            let mut a = target - nums[i];
            for k in i+1..nums.len() {
                if a == nums[k] {
                    rev[0]=k as i32;
                    rev[1]=i as i32;
                    return rev 
                }
            }
        }
        rev
    }
}

Go语言

func twoSum(nums []int, target int) []int {
	var res = []int{-1,-2}
	for i:=0;i<len(nums);i++ {
		temp := target - nums[i]
		for j:=i+1;j<len(nums);j++ {
			if temp == nums[j]{
				res[0]=j
				res[1]=i
				return res
			}
		}
	}
	return  res
}

Python语言

class Solution:
   def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        result_nums = []
        length = len(nums)
        for x in range(length):
            for y in range(x+1,length):
                if nums[x] + nums[y] == target:
                    result_nums.append(x)
                    result_nums.append(y)
                        
        return result_nums

JavaScript语言

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    for(let i = 0;i<nums.length;i++){
        for(let j=i+1;j<nums.length;j++){
            if(nums[i] + nums[j] === target){
            return [i,j];
            }
        }
    }
};

效果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/BaiHuaXiu123/article/details/88540304
今日推荐