切勿眼高手低,很多算法,概念上不难理解,写成代码就全是问题; 本题一定注意 循环结束条件 : while(left <= right) 两种思路 左闭右闭(right = mid - 1)左闭右开(right = mid) 两个技巧 int middle = left + ((right - left) / 2); // 防止溢出 等同于(left + right)/2 int mid = left + ((right - left) >> 1); // 用移位运算代替除法,效率更高