• 【LintCode】060.Search Insert Position


    题目:

    Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

    You may assume NO duplicates in the array.

    [1,3,5,6],5 → 2
    
    [1,3,5,6],2 → 1
    
    [1,3,5,6], 7 → 4
    
    [1,3,5,6],0 → 0
    

      

    题解:

    Solution 1 ()

    class Solution {
        /** 
         * param A : an integer sorted array
         * param target :  an integer to be inserted
         * return : an integer
         */
    public:
        int searchInsert(vector<int> &A, int target) {
            if (A.size() == 0) {
                return 0;
            }
            int start = 0;
            int end = A.size() - 1;
            
            while (start + 1 < end) {
                int mid = start + (end - start) / 2;
                if (A[mid] == target) {
                    return mid;
                } else if (A[mid] > target) {
                    end = mid;
                } else {
                    start = mid;
                }
            }
            if (A[start] >= target) {
                return start;
            } else if (A[end] >= target) {
                return end;
            } else {
                return end + 1;
            }
        }
    };

    Solution 2 ()

    class Solution {
        /** 
         * param A : an integer sorted array
         * param target :  an integer to be inserted
         * return : an integer
         */
    public:
        int searchInsert(vector<int> &A, int target) {
            if (A.size() == 0) {
                return 0;
            }
            int start = 0;
            int end = A.size() - 1;
            while (start + 1 < end) {
                int mid = start + (end - start) / 2;
                if (A[mid] == target) {
                    return mid;
                } else if (A[mid] > target) {
                    end = mid;
                } else {
                    start = mid;
                }
            }
            if (A[end] == target) {
                return end;
            } 
            if (A[end] < target) {
                return end + 1;
            } 
            if (A[start] >= target) {
                return start;
            }
            
            return start + 1;
        }
    };
  • 相关阅读:
    GridView自定义分页
    intro
    ListView和DataPager初试
    在DataGrid中,如何录入数量及单价的时候自动算出金额
    常用正则表达式
    ASP.NET中基类页的设计和使用
    Asp.net实现无刷新检测用户名
    在asp.net2.0中使用存储过程
    .NET中的抽象工厂
    用C#生成随机中文汉字验证码的基本原理 [转]
  • 原文地址:https://www.cnblogs.com/Atanisi/p/6821114.html
Copyright © 2020-2023  润新知