zoukankan      html  css  js  c++  java
  • leetcode二分查找训练题

    二分查找训练

    训练二分查找,以便应用更复杂场景

    package leetcodemid.二分专题;
    
    /**
     * 35. 搜索插入位置
     * 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
     *
     * 请必须使用时间复杂度为 O(log n) 的算法。
     *
     *
     *
     * 示例 1:
     *
     * 输入: nums = [1,3,5,6], target = 5
     * 输出: 2
     * 示例 2:
     *
     * 输入: nums = [1,3,5,6], target = 2
     * 输出: 1
     * 示例 3:
     *
     * 输入: nums = [1,3,5,6], target = 7
     * 输出: 4
     * 示例 4:
     *
     * 输入: nums = [1,3,5,6], target = 0
     * 输出: 0
     * 示例 5:
     *
     * 输入: nums = [1], target = 0
     * 输出: 0
     *
     *
     * 提示:
     *
     * 1 <= nums.length <= 104
     * -104 <= nums[i] <= 104
     * nums 为无重复元素的升序排列数组
     * -104 <= target <= 104
     */
    public class SearchInsert {
        //普通二分查找
        public static int searchInsert(int[] nums, int target) {
            int l = 0;
            int r = nums.length - 1;
            int ans = nums.length;//不在数组内
            while (l <= r) {
                int mid = (l + r) / 2;
                if (nums[mid] < target) {
                    l = mid + 1;
    
                } else if (nums[mid] >= target) {
                    ans = mid;
                    r = mid - 1;
                }
            }
            return ans;
        }
    
        public static void main(String[] args) {
            int[] nums = {1, 3, 5, 6};
            int target = 5;
            System.out.println(searchInsert(nums, target));
        }
    }
    
    
  • 相关阅读:
    css属性及属性值
    Typora使用速记(常用的语法和快捷键)
    自己用的RGB对照表
    分享一波银行的面经攒一下人品
    使用hexo+github搭建博客(一)
    使用hexo+github搭建博客(二)配置和宠物系统
    vue3--相对于vue2的改变-T0档次
    java -- md5 加密
    spring boot--注解 案例
    java--整合druid
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/15666420.html
Copyright © 2011-2022 走看看