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;

            }   
        }
    }
  • 相关阅读:
    linux ssh 免密码登录
    Emacs Org Mode学习
    Emacs Org Mode学习
    java--for循环,一个分号的区别
    java--for循环,一个分号的区别
    【JVM.6】虚拟机类加载机制
    【JVM.5】类文件结构
    【JVM.4】调优案例分析与实战
    【JVM.3】虚拟机性能监控与故障处理工具
    【JVM.2】垃圾收集器与内存分配策略
  • 原文地址:https://www.cnblogs.com/corvus/p/11938767.html
Copyright © 2011-2022 走看看