首页 > 其他 > 详细

LeetCode#1 | Two Sum 两数之和

时间:2020-02-03 00:28:09      阅读:130      评论:0      收藏:0      [点我收藏+]

题目

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

Example:
Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

两数之和
给定一个整数数组和一个目标值,在数组中找出和为目标值的那两个整数,并返回这两个数的数组下标。
可以假设每个输入都会有唯一解,并且一个元素只能用一次。

题解

  • 解法1:
    首当其冲的,就是暴力破解,两个for循环就能搞定,我这脑瓜子果然简单??
    技术分享图片
    第一个数分别和后面三个数相加;第二个数分别和后面两个数相加;第三个数和最后一个数相加;最后一个数已经和前面三个数相加过了,所以不用再相加。
    所以:
    两个循环,第一个循环从第一个数开始遍历,第二个循环从第一个数后面的数开始,两个数相加,外循环和内循环的层数即两个数字的索引。
    空间复杂度:O(1),时间复杂度:O(n2)

代码

function twoSum($arr, $target) {
    for ($i = 0; $i < count($arr) - 1; $i++) {
        for ($j = $i + 1; $j < count($arr); $j++) {
            if ($arr[$i] + $arr[$j] == $target) {
                echo "两个数分别为 $arr[$i] 和 $arr[$j],其对应的下标为 $i 和 $j";
                exit;
            } 
        }
    }
    echo "无解";
}

$arr = [12, 3, 11, 6];
$target = 9;
twoSum($arr, $target);
  • 解法2:

LeetCode#1 | Two Sum 两数之和

原文:https://www.cnblogs.com/sunshineliulu/p/12254201.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!