二分查找整理(左闭右闭写法)
2022/1/2 23:12:37
本文主要是介绍二分查找整理(左闭右闭写法),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 数组中没有重复值
// 非递归方式 public int binarySearch(int[] nums, int target){ int left = 0, right = target.length -1; while(left <= right){ int mid = left + (right - left) / 2; if(nums[mid] < target){ left = mid + 1; } else if(nums[mid] > target) { right = mid - 1; } else { return mid; } } return left; } // 递归方式 public int binarySearch(int[] nums, int target, int left, int right){ if(left > right){ return left; } int mid = left + (right - left) / 2; if(nums[mid] < target){ return binarySearch(nums, target, mid+1, right); } else if(nums[mid] > target){ return binarySearch(nums, target, left, mid-1); } else { return mid; } }
2. 数组中有重复值, 找到第一个出现的地方
// 非递归方式 public int binarySearchFirst(int[] nums, int target){ int left = 0, right = target.length -1; while(left <= right){ int mid = left + (right - left) / 2; if(nums[mid] < target){ left = mid + 1; } else if (nums[mid] >= target) { right = mid - 1; } } return left; } //递归方式 public int binarySearchFirst(int[] nums, int target, int left, int right){ if(left > right){ return left; } int mid = left + (right - left) >> 1; if(nums[mid] < target){ return binarySearchFirst(nums, target, mid+1, right); } else if(nums[mid] >= target){ return binarySearchFirst(nums, target, left, mid-1); } }
这篇关于二分查找整理(左闭右闭写法)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南
- 2024-09-26Springboot微服务资料入门教程