【数据结构】二分查找-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;
	}

}
相关推荐
多喝开水少熬夜6 小时前
Trie树相关算法题java实现
java·开发语言·算法
WBluuue6 小时前
数据结构与算法:树上倍增与LCA
数据结构·c++·算法
bruk_spp6 小时前
牛客网华为在线编程题
算法
lkbhua莱克瓦246 小时前
Java基础——集合进阶用到的数据结构知识点1
java·数据结构·笔记·github
杨福瑞7 小时前
数据结构:单链表(2)
c语言·开发语言·数据结构
音符犹如代码7 小时前
Java并发List实战:CopyOnWriteArrayList原理与ArrayList常见面试题
java·开发语言·面试·list
代码or搬砖7 小时前
Docker 部署 Java 项目实践
java·docker·容器
又是忙碌的一天7 小时前
抽象类和接口
java·开发语言
王璐WL7 小时前
【数据结构】单链表及单链表的实现
数据结构
August_._8 小时前
【MySQL】SQL语法详细总结
java·数据库·后端·sql·mysql·oracle