leetcode算法题两数之和

话不多说直接看,
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum

给定一个示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解题思路如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//创建一个类
class Index
{
    //定义变量
    public $num = null;
    public $target = null;

    //用的是leetcode上面的例子,但是数组值不一样,其实原理一样
    public function __construct(Request $request = null)
    {
        $this->num = [4, 7, 6, 15];
        $this->target = 13;
    }

    //直接运行此方法
    public function getNum()
    {
        foreach($this->num as $key => $value)
        {
            $newNum = $this->target - $value;
            if(isset($arr[$newNum]) && $this->num[$arr[$newNum]] + $value === $this->target){
                return [$arr[$this->target - $value], $key];
            }
            $arr[$value] = $key;
        }
    }
}

此时的运行结果是 [1, 2]

在leetcode原题中的它是按顺序加的,但是我之前写的方法是反过来的,不知道这样子做是不是错的,如果没有规定返回的顺序,我想应该也是对的,如果要求从左到右的顺序,那就是错的,主要区别于下面的函数

1
2
3
4
5
6
7
8
9
10
11
12
    public function getNum()
    {
        foreach($this->num as $key => $value)
        {
            $newNum = $this->target - $value;
            if(isset($arr[$newNum]) && $this->num[$arr[$newNum]] + $value === $this->target){
                return [$arr[$this->target - $value], $key];
            }
            //主要是这一步
            $arr = array_flip($this->num);
        }
    }

这种方法运行出来结果是 [2, 1],主要就是调整键值对位置的时候,使用的是array_flip数组函数

本文为 今天也想见到你 博客文章,转载无需和我联系,但请注明来自 今天也想见到你 博客 0925.wang
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇