
package com.atguigu.binarysearchnorecursion;public class BinarySearchNoRecur {public static void mainString[] args) {int[] arr = {1,3, 8, 10, 11, 67, 100};int index = binarySearcharr, 100);System.out.println"index=" + index);}public static int binarySearchint[] arr, int target) {int left = 0;int right = arr.length - 1;whileleft <= right) { int mid = left + right) / 2;ifarr[mid] == target) {return mid;} else if arr[mid] > target) {right = mid - 1;} else {left = mid + 1; }}return -1;}}


class Solution{public int serchint[]nums,int target){int len=nums.length;iflen==0){return -1;int left=0;int right=len-1;whileleft <=right){int mid=left+right)/2;ifnums[mid]==target){return mid;}else ifnums[mid]<target){left=mid+1;}else{right=mid;}}return left;}}}


class Solution {public int[] searchRangeint[] nums, int target) {int[] res = {-1, -1};if nums == null || nums.length == 0) return res;int leftMost = findFirstOccurrencePosnums, target);if leftMost == -1) {return res;}int rightMost = findLastOccurrencePosnums, target);res[0] = leftMost;res[1] = rightMost;return res;}private int findFirstOccurrencePosint[] nums, int target) {int l = 0, r = nums.length - 1;while l + 1 < r) {int mid = l + r - l) / 2;if nums[mid] >= target) r = mid;else l = mid;}if nums[l] == target) return l;if nums[r] == target) return r;return -1;}private int findLastOccurrencePosint[] nums, int target) {int l = 0, r = nums.length - 1;while l + 1 < r) {int mid = l + r - l) / 2;if nums[mid] <= target) l = mid;else r = mid;}if nums[r] == target) return r;return l;}
}






