zoukankan      html  css  js  c++  java
  • 【嘎】数组-搜索插入位置

    题目:

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

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

    解答:(其中一开始没有注意到target > nums[len - 1] 的情况)

    class Solution {
        public int searchInsert(int[] nums, int target) {
            int len = nums.length;
            if (len == 0) {
                return 0;
            }
            int res = 0;
            for (int i = 0; i < len-1; i++) {
                if (nums[i] < target && target < nums[i+1]) {
                    res = ++i;
                    break;
                } else {
                    if (nums[i] == target) {
                        res = i;
                        break;
                    }
                    if (nums[i+1] == target) {
                        res = i+1;
                        break;
                    }
                }
            }
            // 大于最后一位数
            if (target > nums[len - 1]) {
                res = len;
            }
            return res;
        }
    }
    

      

     看了看别人的解法,我写的除了for循环之外的上下两种解法都可以归结为 return nums.length;

     然后我把res去掉直接就在for循环里面return,最后return了nums.length,然后就出错了,因为for循环里面没有考虑到target < nums[0]的情况,上面那种写法不出错是因为res初始化的时候为0了。

     其实for循环里面只要判断是不是小于就可以了

    public int searchInsert(int[] nums, int target) {
        for(int i = 0; i < nums.length;i++){
            if(nums[i] >= target){
                return i;
            }
        }
        return nums.length;
    }
    越努力越幸运~ 加油ヾ(◍°∇°◍)ノ゙
  • 相关阅读:
    Day01-基础加强笔记
    CS Academy Round#2 E.Matrix Coloring
    AtCoder ABC198 F
    NERC2021 B. Button Lock
    AtCoder ARC115 E
    NOI Online 2021 Round 1 提高组 愤怒的小 N
    洛谷 P6918 [ICPC2016 WF]Branch Assignment
    AtCoder ARC076 F
    Atcoder ABC155 F
    POJ 1966 Cable TV Network
  • 原文地址:https://www.cnblogs.com/utomboy/p/13175514.html
Copyright © 2011-2022 走看看