杨氏矩阵【上】 - Tristan's blog



杨氏矩阵【上】 - Tristan's blog

1.定义:
(此定义摘自:http://blog.csdn.net/dqjyong/article/details/7648698)
杨氏矩阵数据结构的特点有(如下图):

(1)是一个M*N矩阵,并且对于同一行左边的元素要小于(或大于)右边的元素,同一列上面的元素要小于(或大于)下面的元素;

(2)如过元素不够组成一个M*N矩阵,即矩阵有一定的空余空间,那么可以采用+∞(递减的情况为-∞)填充。

2.查找图示
此题目曾经被搜狗的某面试官问过,(网上某人居然也说被问过,难道搜狗的题库这么小。。。)当时我答的是二分查找,每次去掉1/4,最后他看不下去了,好像忍受了我很久的样子,说这个方法太慢了,查了一下网上对其复杂度的介绍:该算法的递归式为f(mn)=3f(mn/4)+O(1),根据主定理知,时间复杂度为:O((mn)^(log4(3)))(未经证实。。。)然后告诉我了一种每次可以去掉一行或者一列的方式,也就是下面这张图显示的方法,比如寻找12这个数字,从右上角(或者左下角)开始找,如果当前值比12小则去掉当前行,不用再找了,直接进入下一行,如果当前值比12大则去掉当前列,也就是说直接左移,不会再找当前列的其他值了。两幅图分别代表从右上角和左下角开始查找的情况


Read full article from 杨氏矩阵【上】 - Tristan's blog


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts