zoukankan      html  css  js  c++  java
  • 关于二分查找的重新梳理 Leetcode704

    之前写二分代码的时候总是纠结判断条件,今天把最基础的二分查找题拿出来梳理一下脉络。

    class Solution {
        public int search(int[] nums, int target) {
            // 二分法,由于整数除法的舍位性,所以mid是可以取到left的位置,但是取不到right的位置,
            int n = nums.length;
            int left = 0;
            int right = n;  // 所以在设置right的时候,是永远不满足条件的边界值,比如说n是取不到的
            int mid = (left + right) / 2;
            while (left < right) {  // 当left和right就差一位的时候,需要思考怎么才能在简化判断条件的情况下不陷入死循环
                if (nums[mid] == target) 
                    return mid;
                else if (nums[mid] < target)
                    left = mid + 1; // 而left可以作为target的位置,所以在mid的基础上加了1,同时也为了满足跳出条件
                else 
                    right = mid;    // right或是大于target的值,还是取不到的值
                mid = (left + right) / 2;
            }
            return -1;
        }
    }
    
  • 相关阅读:
    JAVA的中文字符乱码问题
    JAVA SSH 框架介绍
    MySQL必备命令
    java文件操作
    注意事项
    再探java基础——throw与throws
    table与div互相嵌套注意
    数列F[19] + F[13]的值
    统计各类字符个数
    长理ACM 14-星期几(谌海军)
  • 原文地址:https://www.cnblogs.com/IO382/p/13360498.html
Copyright © 2011-2022 走看看