本文準(zhǔn)備講解1個(gè)算法編程問題摘刑, 這個(gè)算法編程問題來自LintCode平臺(tái)。不了解.LintCode平臺(tái)的讀者可以閱讀筆者文章(在線編程平臺(tái)推薦-LeetCode)棋嘲。問題的英文版本描述如下:
Search a 2D Matrix II
Write an efficient algorithm that searches an m x n matrix, return the occurrence count of targets.
This matrix has the following properties:
Integers in each row are sorted from left to right.
Integers in each column are sorted from up to bottom.
Example
Consider the following matrix:
[
[1, 3, 5, 7],
[2, 4, 7, 8],
[3, 5, 9, 10]
]
Given target =3, return 2.
搜索二維矩陣?II
搜索m×n矩陣负饲。
這個(gè)矩陣具有以下特性:
Integers in each row are sorted from left to right.
Integers in each column are sorted from up to bottom.
樣例
考慮下列矩陣:
[
[1, 3, 5, 7],
[2, 4, 7, 8],
[3, 5, 9, 10]
]
給出 target =3旱眯,返回?2.
面對(duì)2維矩陣,首先需要找到目標(biāo)元素所在的矩陣行画恰。每個(gè)矩陣行都為升序數(shù)列彭谁,矩陣的首列也為升序數(shù)列。找到目標(biāo)元素所在的矩陣行需要搜索矩陣首列允扇。然后需要找到目標(biāo)元素所在的位置缠局。找到目標(biāo)元素所在的矩陣位置需要搜索目標(biāo)元素所在的矩陣行。JAVA 語(yǔ)言提供的數(shù)組搜索函數(shù)只能找到目標(biāo)數(shù)組元素蔼两。面對(duì)本問題甩鳄,找到目標(biāo)元素所在的矩陣行不能選用 JAVA 語(yǔ)言提供的數(shù)組搜索函數(shù);找到目標(biāo)元素所在的矩陣位置可以選用 JAVA 語(yǔ)言提供的數(shù)組搜索函數(shù)额划。該算法不能處理行內(nèi)字符重復(fù)出現(xiàn)妙啃。 ( 參見另1個(gè)問題的文章:LintCode問題圖解-20。?)
搜索二維矩陣?II 問題和搜索二維矩陣問題都不能對(duì)應(yīng)通用的搜索二維矩陣問題,通用的搜索二維矩陣問題需要選用更多的測(cè)試用例揖赴。