zoukankan      html  css  js  c++  java
  • 35. Search Insert Position

    给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。

    你可以假设在数组中无重复元素。

    一句话思路:找到第一个大于等于target的数。问题:以为要改模板,不会。

    思路真身:不用改模板。模板最后得出的是一个最小的范围了 只有两个数,对这个范围的小线段分情况讨论就行了,容易得一比。感觉对二分的理解更深了一点……

    一刷报错:

    1. 是》,我只写了大于。太蠢了。
    2. 特殊情况里有数组为空的情况nums == null, 此时数组是空的,插入0
    3. 必须要有return -1的特殊情况了

    风格上:

    1. while后要加空格阿T T
    class Solution {
        public int searchInsert(int[] nums, int target) {
            if (nums == null || nums.length == 0) {
                return 0;
            }
            
            int start;
            int end;
            int mid;
            
            //search for a minimum range
            start = 0;
            end = nums.length - 1;
            while(start + 1 < end) {
                mid = start + (end - start) / 2;
                if (nums[mid] == target) {
                    end = mid;
                }
                if (nums[mid] < target) {
                    start = mid;
                }
                if (nums[mid] > target) {
                    end = mid;
                }
            }
            
            //find the position
            if (nums[start] >= target) {
                return start;
            }
            else if (nums[end] >= target) {
                return end;
            }
            else if (nums[end] < target) {
                return end+1;
            }
            
            return -1;
        }
    }
  • 相关阅读:
    QQ企业邮箱+Spring+Javamail+ActiveMQ(发送企业邮件)
    Notepad++使用图解
    Sublime Text 2安装图解
    IDE UltraEdit 图文激活+安装教程
    光猫与普通的家用猫
    通过Java Api与HBase交互(转)
    HBase配置性能调优(转)
    HBase Java API类介绍
    hbase shell基础和常用命令详解(转)
    HBase体系结构(转)
  • 原文地址:https://www.cnblogs.com/immiao0319/p/7881709.html
Copyright © 2011-2022 走看看