• Leetcode 35. 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.

    Example 1:

    Input: [1,3,5,6], 5
    Output: 2
    

    Example 2:

    Input: [1,3,5,6], 2
    Output: 1
    

    Example 3:

    Input: [1,3,5,6], 7
    Output: 4
    

    Example 1:

    Input: [1,3,5,6], 0
    Output: 0

    采用分治算法的思想,先从中间比较,然后看是哪一边,接着再分治,主要注意下标是从0开始,而且要想清楚边界条件如果target在数组的最左边,或者target在数组的最右边该怎么插入target。
     1 #include <stdio.h>
     2 
     3 #include <vector>
     4 
     5 class Solution {
     6 public:
     7     int searchInsert(std::vector<int>& nums, int target) {
     8         int index = -1;
     9         int begin = 0;
    10         int end = nums.size() - 1;
    11         while (index == -1){
    12             int mid = (begin + end) / 2;
    13             if (target == nums[mid]){
    14                 index = mid;
    15             }
    16             else if (target < nums[mid]){
    17                 if (mid == 0 || target > nums[mid - 1]){
    18                     index = mid;
    19                 }
    20                 end = mid - 1;
    21             }
    22             else if (target > nums[mid]){
    23                 if (mid == nums.size() - 1 || target < nums[mid + 1]){
    24                     index = mid + 1;
    25                 }
    26                 begin = mid + 1;
    27             }
    28         }
    29         return index;
    30     }
    31 };
    32 
    33 int main(){
    34     int test[] = {1, 3, 5, 6};
    35     std::vector<int> nums;
    36     Solution solve;
    37     for (int i = 0; i < 4; i++){
    38         nums.push_back(test[i]);
    39     }
    40     for (int i = 0; i < 8; i++){
    41         printf("i = %d index = %d
    ", i, solve.searchInsert(nums, i));
    42     }
    43     return 0;
    44 }

    通过~

  • 相关阅读:
    Eclipse对printf()不能输出到控制台的解决方法
    Eclipse launch failed.Binary not found解决方案
    Windows 7中使用Eclipse 使用CDT and WinGW 开发C/C++(转载)
    assets
    方法对头,报表模板维护其实很简单
    刷机包各个文件都是啥
    开机logo切换逻辑深入研究
    不同分辨率的LCM进行兼容
    SD卡驱动分析(二)
    SD卡驱动分析(一)
  • 原文地址:https://www.cnblogs.com/Hwangzhiyoung/p/8641059.html
Copyright © 2020-2023  润新知