MENU

二分查找

2021 年 08 月 10 日 • 阅读: 91 • 学习笔记

题目

给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1

解答

JavaScript

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var search = function(nums, target) {  // 二分法查找
    var left = 0,  // 左边
        right = nums.length - 1;  // 右边
    while (left <= right) {  // 数组0开始 length最小为1
        var mid = Math.floor(left + (right - left) / 2);  // 中间数 向下取整
        if (nums[mid] < target) {
            left = mid + 1;
        } else if (nums[mid] > target) {
            right = mid - 1;
        } else if (nums[mid] == target) {
            return mid;
        }
    }
    return -1;  // 没有结果返回
};

PHP

简单粗暴的循环查找法:

class Solution {
    /**
     * @param Integer[] $nums
     * @param Integer $target
     * @return Integer
     */
    function search($nums, $target) {  // 循环查找
        $test = -1;  // 返回结果 默认
        $len = count($nums);  // 一共多少个
        for ($i = 0; $i < $len; $i++) {  // 循环
            if ($nums[$i] == $target) { // 判断
                $test = $i;  // 位置
                break;  // 终止循环
            }
        }
        return $test;  // 返回结果
    }
}

|十年之约

本网站由提供CDN加速/云储存服务