zoukankan      html  css  js  c++  java
  • PHP算法之两数之和

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

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

    示例:

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

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

    本人代码

    function twoSum($nums, $target) {
        
        foreach($nums as $key => $value){

            $num = $target - $value;
       //这块运行消耗太多 比较慢
            $k = array_search($num, array_reverse($nums, true)); 

            if($k != $key && !empty($k)){

                return [$key,$k];
            }
        }
     
     
    优化后
    class Solution {

        /**
         * @param Integer[] $nums
         * @param Integer $target
         * @return Integer[]
         */
        function twoSum($nums, $target) {
            $arr = [];

            foreach($nums as $key => $value){

                $num = $target - $value;

                if (array_key_exists($num, $arr)) {

                    return [$arr[$num], $key];

                }

                $arr[$value] = $key;

            }   
        }
    }
  • 相关阅读:
    05 redis中的Setbit位图法统计活跃用户
    04 redis list结构及命令详解
    03 redis之string类型命令解析
    02 redis通用命令操作
    Mesos提交任务没有被执行
    mesos的zookeeper变更
    VS Code使用git
    vs code 安装Scala
    打印正反读计算方式
    cloudera上面安装Spark2.0
  • 原文地址:https://www.cnblogs.com/corvus/p/11938767.html
Copyright © 2011-2022 走看看