菜鸟刷题之路——Q22:稀疏数组搜索

it2026-08-21  3

问题:面试题 10.05. 稀疏数组搜索

分析:

  分析:看到有序,必先二分。但是注意:如果我们二分的mid指向一个空的字符串那么我们需要向两边寻找到一个非空的字符串,把它作为mid,如果俩边都没有,那么直接返回-1.

code

class Solution { public int findString(String[] words, String s) { int left = 0, right = words.length - 1; while (left <= right) { int mid = (left + right) >>> 1; if (words[mid].equals("")) { while (++mid < right && words[mid].equals("")); if (mid >= right) { mid = (left + right) >>> 1; while (--mid > left && words[mid].equals("")); if (mid <= left) return -1; } } if (words[mid].compareTo(s) == 0) return mid; if (words[mid].compareTo(s) > 0) right = mid - 1; else left = mid + 1; } return -1; } }

结果:


最新回复(0)