• 如何实现数组查找


    牛客网上的问题描述:

    在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    自己写了一个很简单的二次循环查找。(在这里边考虑了如果不是数组的情况,本来想写一个自身循环调用的写法,但是都失败了==!)

    /**
     * 
     * @param {number} target 
     * @param {number[]} array 
     */
    function Find(target, array)
    {
        var len = array.length;
        var flag = false;
        for(var i=0; i< len; i++) {
            var ele = array[i];
            if(typeof ele !== 'object') {
                if(target === ele) {
                    flag = true;
                    continue;
                }
            } else {
                var idx = ele.indexOf(target);
                //flag = (idx!=-1)&&true;
                if(idx !== -1) {
                    flag = true;
                }
            }
        }
        return flag;
    }

    在牛客网上分享区里找到了一个思路,因为题目描述是顺序从左至右排列,可以利用二叉树查找的方法。

    function Find(target, array) {
        for(var i=0; i<array.length; i++) {
            var low = 0,
                ele = array[i];
            var high = ele.length - 1;
            
            while(low <= high) {
                var mid = Math.floor((low+high)/2);
                if( target < ele[mid]) {
                    high = mid - 1;
                }else if( target > ele[mid] ) {
                    low = low + 1;
                } else {
                    return true;
                }
            }
        }
        return false;
    }

     2. 

    /**
     * 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
    
     *你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
     * @param {number[]} nums
     * @param {number} target
     * @return {number[]}
     */
    function twoSum(nums, target) {
        var res =[];
        for(var i=0; i<nums.length;i++) {
            for(var j=i+1; j<nums.length; j++) {
                if(i !== j && (nums[i] + nums[j]) === target) {
                    res.push(i);
                    res.push(j);
                    break;
                }
            }
        }
        return res;
    };
  • 相关阅读:
    博客园界面部分优化
    jQuery获取Select选择的Text和 Value
    java开发各层对象含义
    接口与抽象类的区别(完整描述)
    Map相关知识总结
    html引用外部js和css
    RDD内存迭代原理(Resilient Distributed Datasets)---弹性分布式数据集
    spark高可用集群搭建及运行测试
    spark集群的简单测试和基础命令的使用
    spark集群搭建
  • 原文地址:https://www.cnblogs.com/echo2016/p/8985488.html
Copyright © 2020-2023  润新知