算法

Wednesday, September 1, 2021

二维数组中的查找

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

[
	[1,2,8,9],
	[2,4,9,12],
	[4,7,10,13],
	[6,8,11,15]
]

给定 target = 7,返回 true。

给定 target = 3,返回 false。

0 <= array.length <= 500 0 <= array[0].length <= 500

// 因为数组都是从左到右,从上到下递增的,因此比较的时候是有规律的。
// 我们可以从数组的右上角开始进行比较。
// 分为以下两种情况:
// 1、当目标数字比右上角的数字小时;
// 因为右上角的数字是它那一列中最小的,那么目标数字一定比右上角那一列的数字都小。
// 就没有比较的必要了,因此,可以将比较的数字左移一排,继续进行比较。

// 2、当目标数字比右上角的数字大时;
// 右上角的数字是那一行中最大的,因此目标数字比哪一行的数字都大,那一行也没有继续比下去的必要了。
// 因此将右上角的数字下移一位,继续进行比较,直到找完或者找到为止。

function Find(target, array) {
    const xLength = array[0].length
    const yLength = array.length
    for (let x = xLength - 1, y = 0; x >= 0 && y < yLength; ) {
        if (array[y][x] > target) {
            x--
        } else if (array[y][x] < target) {
            y++
        } else {
            return true
        }
    }
    return false
}

替换空格

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

function replaceSpace( s ) {
  // write code here
   return s.split(" ").join("%20")
}
function replaceSpace( s ) {
    // write code here
    return s.replace(/ /g, '%20');
}