• 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 }

    通过~

  • 相关阅读:
    使用 libevent 和 libev 提高网络应用性能
    在PHP中PDO解决中文乱码问题的一些补充
    apache重写规则详解
    Apache的配置
    正则表达式30分钟入门教程
    LVS+keepalived搭建负载均衡
    php判断终端是手机还是电脑访问网站代码
    nginx 502 bad gateway
    算法复习-深度优先遍历和回溯法的关系
    分支限界法和回溯法对比
  • 原文地址:https://www.cnblogs.com/Hwangzhiyoung/p/8641059.html
Copyright © 2020-2023  润新知