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;
        }
    }
  • 相关阅读:
    Javascript之in操作符的用法
    auguements实参对象的数组化
    jQuery多库共存问题解决方法
    JS框架设计之命名空间设计一种子模块
    WebStorm 快键键
    Sington单例模式(创建型模式)
    Asp.Net Cache缓存技术学习
    跨域
    webuploader跨域上传
    BuiltWith
  • 原文地址:https://www.cnblogs.com/immiao0319/p/7881709.html
Copyright © 2011-2022 走看看