c语言暴力求解法二维数组比较,【算法】搜索二维矩阵 暴力解法&二分法 4种语言...

1460000039745114

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

每行中的整数从左到右按升序排列。

每行的第一个整数大于前一行的最后一个整数。

示例 1:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3

输出:true

示例 2:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13

输出:false

提示:m == matrix.length

n == matrix[i].length

1 <= m, n <= 100

-104 <= matrix[i][j], target <= 104

javascript 暴力解法/**

* @param {number[][]} matrix

* @param {number} target

* @return {boolean}

*/

var searchMatrix = function(matrix, target) {

for(let i=0;i

for(let j=0;j

if(matrix[i][j]===target){

return true

}

}

}

return false

};

javascript 数组查找/**

* @param {number[][]} matrix

* @param {number} target

* @return {boolean}

*/

/*

以二维数组左下角为原点,建立直角坐标轴。

若当前数字大于了查找数,查找往上移一位。

若当前数字小于了查找数,查找往右移一位。

*/

var searchMatrix = function(matrix, target) {

let x = matrix.length-1,y = 0

while(x>=0 && y

if(matrix[x][y]===target){

return true

}else if(matrix[x][y]>target){

x--

}else{

y++

}

}

return false

};

javascript 二分法/**

* @param {number[][]} matrix

* @param {number} target

* @return {boolean}

*/

var searchMatrix = function(matrix, target) {

let m = matrix.length,n=matrix[0].length

let low = 0,high = m*n-1

while(low<=high){

let mid = Math.floor((high-low)/2)+low //中位

let x = matrix[Math.floor(mid/n)][mid%n] //所在的值

if(x

low = mid+1

}else if(x>target){

high = mid-1

}else{

return true

}

}

return false

};

Typescript 以上两种也可以改为tsfunction searchMatrix(matrix: number[][], target: number): boolean {

let x: number = matrix.length - 1, y:number = 0

while (x >= 0 && y < matrix[0].length) {

if (matrix[x][y] === target) {

return true

} else if (matrix[x][y] > target) {

x--

} else {

y++

}

}

return false

};

python 暴力解法class Solution(object):

def searchMatrix(self, matrix, target):

for i in range(len(matrix)):

for j in range(len(matrix[0])):

if matrix[i][j]==target:

return True

return False

python any函数

any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。元素除了是 0、空、FALSE 外都算 TRUE。

语法def any(iterable):

for element in iterable:

if element:

return True

return False

解法class Solution(object):

def searchMatrix(self, matrix, target):

return any(target in row for row in matrix)

Go 数组查找func searchMatrix(matrix [][]int, target int) bool {

m := len(matrix)

n := len(matrix[0])

var i = 0

for i < m && n > 0 {

if target == matrix[i][n-1] {

return true

} else if target < matrix[i][n-1] {

n--

} else {

i++

}

}

return false

}

第一次尝试用4种语言去解一道题目,继续加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值