首页 > 编程语言 >二分查找算法题1

二分查找算法题1

时间:2023-10-31 19:11:52浏览次数:27  
标签:二分 arr right int mid 算法 查找 left

/**
     * https://leetcode.cn/problems/sqrtx/description/
     * 二分查找
     * 将数据分成两部分
     * 第一部分为平方小于等于target
     * 另外的为大于target
     * left=mid。right=mid-1;使用+1求中
     * */
    public static void hanShu19(int x){
        if (x==0){
            return;
        }
        long left=1,right=x;
        while (left<right){
            long mid=left+(right-left+1)/2;
            if (mid*mid<=x)left=mid;
            else right=mid-1;
        }
        System.out.println(left);
    }
/**
     * https://leetcode.cn/problems/peak-index-in-a-mountain-array/description/
     * 找到山脉的顶
     * 由于山顶天然的将数组分成了两端,一段为arr[mid]>arr[mid-1]包括峰顶的左边
     * 还有一段为arr[i]>arr[i+1]的右边
     * 当arr[mid]>arr[mid-1]的时候说明mid落在了左边此时left=mid
     * 反之则落在了右边right=mid-1
     * */
    public static void hanShu21(int[] arr){
        int left=1,right=arr.length-2;
        while (left<right){
            int mid=left+(right-left+1)/2;
            if (arr[mid]>arr[mid-1])left=mid;
            else right=mid-1;
        }
        return;
    }

 

标签:二分,arr,right,int,mid,算法,查找,left
From: https://www.cnblogs.com/wllovelmbforever/p/17779214.html

相关文章

  • 二分模板 Acwing 789 数的范围
     二分一定有解,若出现无解,一定是题目中无解二分步骤:定义check函数,先找到一个x,使得区间左边满足条件区间右边不满足条件,定义mid=l+r>>1去判断于x的关系,此时需要判断边界关系,例如当a[mid]小于x时,说明二分值在x的左边,此时缩小范围为【mid,r】,即令l=mid,此时返回check函数,......
  • 【算法题】2826. 将三个组排序
    题目:给你一个下标从0开始长度为n的整数数组nums。从0到n-1的数字被分为编号从1到3的三个组,数字i属于组nums[i]。注意,有的组可能是空的。你可以执行以下操作任意次:选择数字x并改变它的组。更正式的,你可以将nums[x]改为数字1到3中的任意一个。你将按......
  • 【算法题】2788. 按分隔符拆分字符串
    题目:给你一个字符串数组words和一个字符separator,请你按separator拆分words中的每个字符串。返回一个由拆分后的新字符串组成的字符串数组,不包括空字符串。注意separator用于决定拆分发生的位置,但它不包含在结果字符串中。拆分可能形成两个以上的字符串。结果字符串必......
  • 【算法题】2765. 最长交替子序列
    题目:给你一个下标从0开始的整数数组nums。如果nums中长度为m的子数组s满足以下条件,我们称它是一个交替子序列:m大于1。s1=s0+1。下标从0开始的子数组s与数组[s0,s1,s0,s1,…,s(m-1)%2]一样。也就是说,s1-s0=1,s2-s1=-1,s3-s2=1,s4-s3......
  • 【算法题】2769. 找出最大的可达成数字
    题目:给你两个整数num和t。如果整数x可以在执行下述操作不超过t次的情况下变为与num相等,则称其为可达成数字:每次操作将x的值增加或减少1,同时可以选择将num的值增加或减少1。返回所有可达成数字中的最大值。可以证明至少存在一个可达成数字。示例1:输入:num=4,......
  • 【算法题】2817. 限制条件下元素之间的最小绝对差
    题目:给你一个下标从0开始的整数数组nums和一个整数x。请你找到数组中下标距离至少为x的两个元素的差值绝对值的最小值。换言之,请你找到两个下标i和j,满足abs(i-j)>=x且abs(nums[i]-nums[j])的值最小。请你返回一个整数,表示下标距离至少为x的两个元素之......
  • 【算法题】7004. 判别首字母缩略词
    题目:给你一个字符串数组words和一个字符串s,请你判断s是不是words的首字母缩略词。如果可以按顺序串联words中每个字符串的第一个字符形成字符串s,则认为s是words的首字母缩略词。例如,“ab”可以由[“apple”,“banana”]形成,但是无法从[“bear”,“aardvark......
  • 10.31算法
    最长回文子串给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"class Solution {public:    string longes......
  • R语言非参数方法:使用核方法和K-NN(k近邻算法)分类预测心脏病数据|附代码数据
    原文链接: http://tecdat.cn/?p=22181 原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于非参数方法的研究报告,包括一些图形和统计输出。本文考虑一下基于核方法进行分类预测。注意,在这里,我们不使用标准逻辑回归,它是参数模型。非参数方法用于函数估计的非参数方法大......
  • 文心一言 VS 讯飞星火 VS chatgpt (124)-- 算法导论10.5 5题
    五、用go语言,给定一个n结点的二叉树,写出一个O(n)时间的非递归过程,将该树每个结点的关键字输出。要求除该树本身的存储空间外只能使用固定量的额外存储空间,且在过程中不得修改该树,即使是暂时的修改也不允许。文心一言:您可以使用一个栈来存储节点,以便在遍历二叉树时进行回溯。由于您......