当前位置:首页 > PHP > 正文内容

letcode两数之和php版本

高老师5年前 (2020-11-07)PHP1230

先看看题目:

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

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

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

(1).暴力枚举.我第一次做这道题只能想到这个,文科生有点丢人了。两个大循环,每次循环都用目标值去减去当前值,如果结果的值在这个数组中,并且不是当前值则返回当前值的位置和结果值的位置。

class Solution
{
    /**
     * @param Integer[] $nums
     * @param Integer $target
     * @return Integer[]
     */
    function twoSum($nums, $target)
    {
        foreach ($nums as $key => $value)
        {
            $temp = $target - $value;
            foreach ($nums as $key2 => $value2)
            {
                if ($value2 == $temp && $key2 != $key)
                {
                    return [$key, $key2];
                }
            }
        }
    }
}

(2).哈希表. 建立一个哈希表,key保存每个元素的值,value保存每个元素原来的key.每次循环时判断哈希表是否存在一个(目标值-当前元素)的值,存在则返回当前元素的key和哈希表中的位置。我起初认为这样是不正确的,因为上面要求返回的是[0,1],但是我们这样来做结果是[1,0],不过我看了下letcode的题解,这样也是正确的。

class Solution
{
    /**
     * @param Integer[] $nums
     * @param Integer $target
     * @return Integer[]
     */
    function twoSum($nums, $target)
    {
        $hash = [];
        foreach ($nums as $key => $value)
        {
            $temp = $target - $value;
            if (isset($hash[$temp]))
            {
                return [$key, $hash[$temp]];
            }
            $hash[$value] = $key;
        }
    }
}

很显然hash来处理更快

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/188.html

分享给朋友:

“letcode两数之和php版本” 的相关文章

PHP浮点数乘以整数还是浮点型

PHP浮点数乘以整数还是浮点型

<?PHP     $a=0.5*100;     if(is_int($a)){   echo'int'; } else{ echo'not int';   }    ...

php 经纬度获取城市,php 经纬度转城市

php 经纬度获取城市,php 经纬度转城市

通过经纬度转换为城市名称,并获得城市的编号,通常在全国类型的商城中比较通用。//经纬度转城市名称(返回城市id,城市名称) //$ak开发密钥,$lat纬度,$lng经度,$type返回数据类型 public function getCityName($ak,$lat,$lng)...

php finally使用

php finally使用

<?php /**  * @throws Exception  */ function curl() {     throw  new \Exception('err...

php定义常量数组

php定义常量数组

<?php //php7+ define('CONFIG', [     'MYSQL' => '127.0.0.1',     ...

PHP最快方式模拟curl,PHP最快爬虫模拟方法

PHP最快方式模拟curl,PHP最快爬虫模拟方法

有时候我们需要爬一个接口,但是这个接口需要很多参数,包括header和cookie要去编写,使用php curl模拟实在太慢。我们可以通过浏览器的network来复制请求为curl命令。例如我需要模拟请求接口地址:https://www.xkmz.cc/Ajax/Debug/delly,我们只需要在...

php redis队列实现秒杀 , php用redis 实现秒杀功能

php redis队列实现秒杀 , php用redis 实现秒杀功能

为什么使用队列?因为pop取队列具有原子性。假如我们需要秒杀一个商品id,我们先将商品的库存保存到一个队列。例如:<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6...