zoukankan      html  css  js  c++  java
  • 面试代码基础(二)二分法binary Search Sorted Array

    二分法总结:满足某个条件的first position of。。。。  和 last position  of。。。。用二分法

    先从二分法开始写:

    4点:

    1.start+1<end; 退出条件两个相邻了就退出

    2.mid=start+(end-start)/2;//防止溢出

    3.A[mid] == > <

    4.最后判断相邻的两个元素和target的关系

    找第一个出现target的位置

    if(A.size() == 0){
        return -1;
    }
    int start=0;int end=A.size()-1;
    while(start+1<end){
        int mid=start+(end-start)/2;
        if(target == A[mid]){
            end = mid;//find first appear
        }
        else if(target < A[mid]){
            end = mid;
        }else if(target > A[mid]){
            start=mid;
        }
    }
    if(target == A[start]){
        return start;
    }
    else if(target ==  A[end]){
        return end;
    }
    return -1;
    

    Search for a range

    找first pos  last pos

    当target == A[mid]

    start 和 end怎么挪

    1 2 4 4 5

    找左边界

    在(target == A[mid]){

    end=mid;

    }

    找右边界

    (target == A[mid]){

    start=mid;

    }

    寻找插入位置(无重复元素)

    第一个大于等于target的下标

    在第四点会发生变化~

    iftargete)

    Search a 2D matrix

    行递增  列递增

    思考:从左下角考虑

    可以删掉一行或者一列!!!

  • 相关阅读:
    是否完全二叉搜索树 (30 分)
    链表去重
    关于堆的判断
    玩转二叉树
    hdu-2795 Billboard(线段树)
    线段树超级大模版
    博弈dp 以I Love this Game! POJ
    kuangbin 最小生成树
    Infinite Maze CodeForces
    Alice’s Stamps HDU
  • 原文地址:https://www.cnblogs.com/ldphoebe/p/5940682.html
Copyright © 2011-2022 走看看