搜索算法:三问
Search Algorithms
题目详情
A. 用不超过 次比较同时找出 个数的最小值与最大值。
B. 一个数组前面全是 0,后面全是非 0,且数组长度未知,如何找到第一个非 0 的索引?
C. 正方形矩阵每行从左到右递增、每列从上到下递增,如何快速判断某个值 是否存在?
A. Find min & max from numbers with comparisons?
B. Zeropad then all nonzero, size unknown. Find first nonzero index?
C. Square matrix with rows inc left→right, cols inc top→down. Find a target x quickly?
解析
A. 两两配对先比较( 次),较小者集合找 min(),较大者集合找 max(),总计 。
B. 先查 1,2,4,8,... 做指数扩张直到命中非 0 的上界 ,再在区间 二分,复杂度 。
C. 从右上角开始:若当前值 向左;若 向下。每步排除一行或一列,最多 步,复杂度 。
Original Explanation
AnswerA:
Pair up => compares. Smaller half => find min using compares. Larger half => find max . Total .
AnswerB:
Check index 1,2,4,8,... until find nonzero at . Then do binary search in . Complexity .
AnswerC:
Start top-right. If current> x => go left. If < x => go down. Each step discards a row or col => steps. .