【数据结构】二分查找-LeftRightmost

查找:

Leftmost(最左侧重复元素)

java 复制代码
package 二分查找;

public class BinarySearch {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	}
     public static int binarySearchBasic(int[] a,int target) {
    	 int i=0,j=a.length-1; //设置指针初值
    	 int candidate=-1;
    	 while(i<=j) { //范围有内容
    		 int m=(i+j)>>>2;
    		 if(target<a[m]) {
    			 j=m-1;
    		 }else if(target>a[m]) {
    			 i=m+1;
    		 }else {
    			candidate=m;
    			j=m-1;     //找最左的元素
    		 }
    	 }
    	 return candidate;
	}

}

Rightmost(最右侧重复元素)

java 复制代码
package 二分查找;

public class BinarySearch {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	}
     public static int binarySearchBasic(int[] a,int target) {
    	 int i=0,j=a.length-1; //设置指针初值
    	 int candidate=-1;
    	 while(i<=j) { //范围有内容
    		 int m=(i+j)>>>2;
    		 if(target<a[m]) {
    			 j=m;
    		 }else if(target>a[m]) {
    			 i=m+1;
    		 }else {
    			candidate=m;
    			i=m+1;     //找最右的元素
    		 }
    	 }
    	 return candidate;
	}

}

插入:

插入位置(>=target的最靠左索引位置)

java 复制代码
package 二分查找;

public class BinarySearch {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	}
     public static int binarySearchBasic(int[] a,int target) {
    	 int i=0,j=a.length-1; //设置指针初值
    	 while(i<=j) { //范围有内容
    		 int m=(i+j)>>>2;
    		 if(target<a[m]) {
    			 j=m-1;
    		 }else {
    			j=m-1;     //找最左的元素
    		 }
    	 }
    	 return i;
	}

}

Rightmost(<=target的最靠右索引位置)

java 复制代码
package 二分查找;

public class BinarySearch {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	}
     public static int binarySearchBasic(int[] a,int target) {
    	 int i=0,j=a.length-1; //设置指针初值
    	 int candidate=-1;
    	 while(i<=j) { //范围有内容
    		 int m=(i+j)>>>2;
    		 if(target<a[m]) {
    			 j=m;
    		 }else{
    			 i=m+1;
    		 }
    	 }
    	 return j;
	}

}
相关推荐
hetao17338372 分钟前
校内场-提高组 ZYZSC-S-Round 4
c++·算法
君顾15 分钟前
外卖CPS系统开发实战指南:从架构设计到部署全流程解析
java·开发语言·外卖
彧azz30 分钟前
二叉搜索树学习记录
c语言·数据结构·笔记·算法
奇牙coding12342 分钟前
GPT-5.5 升级 GPT-5.6 接入指南:流式调用配置与常见问题
java·网络·gpt·ai
老刘的望远镜1 小时前
AgentScope Java 从零(03):Agent 的记性默认全开,我在第 50 轮翻了车
java·开发语言·javascript
yxlalm1 小时前
5.3解决超卖问题
java·spring boot·超卖
手写码匠1 小时前
DeepSeek 函数调用实战:从零搭建一个会“动手“的 AI 助手
人工智能·深度学习·算法·aigc
李少兄2 小时前
Java 中只有值传递吗?
java·开发语言·python
名字还没想好☜2 小时前
Spring @EventListener 事件驱动解耦实战:同步转异步、事务绑定与顺序控制
java·数据库·后端·python·spring
果壳science2 小时前
《自然本源》如何实现狭义相对论的代数化
笔记·算法·几何学