classSolution{publicintsearchInsert(int[] nums,int target){int l =0;int r = nums.length-1;while(l<=r){int mid =(l+r)>>1;if(nums[mid]==target){return mid;}elseif(nums[mid]<target){
l = mid+1;}else{
r = mid-1;}}return l;}}
2.搜索二维矩阵No.74
方法一:遍历
publicbooleansearchMatrix(int[][] matrix,int target){int m = matrix.length;int n = matrix[0].length;for(int i =0;i < m;i++){for(int j =0;j < n;j++){if(matrix[i][j]==target){returntrue;}}}returnfalse;}
方法二:二分
classSolution{publicbooleansearchMatrix(int[][] matrix,int target){int m = matrix.length;int n = matrix[0].length;// 定义二分查找的左右边界int left =0;int right = m * n -1;while(left <= right){// 计算中间位置int mid = left +(right - left)/2;// 将一维索引转换为二维矩阵中的行和列int row = mid / n;int col = mid % n;int midVal = matrix[row][col];if(midVal == target){returntrue;// 找到目标值}elseif(midVal < target){
left = mid +1;// 在右半部分查找}else{
right = mid -1;// 在左半部分查找}}returnfalse;// 未找到目标值}}
3.在排序数组中查找元素的第一个和最后一个位置No.34
思路:acwing整数二分
publicint[]searchRange(int[] nums,int target){// 创建返回值数组int[] res =newint[2];
res[0]=-1;// 默认值是 -1
res[1]=-1;// 默认值是 -1int l =0;int r = nums.length -1;// 寻找左边界while(l <= r){int mid =(l + r +1)>>1;if(nums[mid]== target){
res[0]= mid;
r = mid-1;//继续向左搜索}elseif(nums[mid]< target){
l = mid +1;}else{
r = mid -1;}}// 寻找右边界
l =0;
r = nums.length -1;while(l <= r){int mid =(l + r)>>1;if(nums[mid]== target){
res[1]= mid;
l = mid+1;//继续向右搜索}elseif(nums[mid]> target){
r = mid -1;}else{
l = mid +1;}}return res;}
publicint[]searchRange(int[] nums,int target){int l =0;int r = nums.length -1;int[] res =newint[2];
res[0]=-1;
res[1]=-1;if(nums.length ==0|| nums ==null)return res;while(l < r){int mid =(l + r )>>1;if(nums[mid]>= target){
r = mid;}else{
l = mid +1;}}if(nums[l]!= target){return res;}else{
res[0]= l;}
l =0;
r = nums.length -1;while(l < r){int mid =(l + r +1)>>1;//+1代表确认右边界if(nums[mid]<= target){
l = mid;}else{
r = mid -1;}}
res[1]= l;return res;}
4.搜索旋转排序数组No.33
方法一:for循环遍历
publicintsearch(int[] nums,int target){//for循环遍历for(int i =0;i<nums.length;i++){if(nums[i]==target){return i;}}return-1;}
方法二:二分 O(logN)
publicintsearch(int[] nums,int target){int l =0;int r = nums.length-1;while(l<=r){int mid =(l+r)>>1;if(nums[mid]==target){return mid;}if(nums[l]<=nums[mid]){//左半边有序if(nums[l]<=target&&target<=nums[mid]){
r = mid-1;}else{
l = mid +1;}}else{//右半边有序if(nums[mid]<=target&&target<=nums[r]){
l = mid+1;}else{
r = mid -1;}}}return-1;}
5.寻找旋转排序数组中的最小值No.153
二分
关键在于判断中间值是否大于最右边的值
publicintfindMin(int[] nums){int l =0;int r = nums.length-1;while(l<r){int mid =(l+r)>>1;if(nums[mid]>=nums[r]){//说明小数在右半部分
l = mid+1;}else{
r = mid;}}return nums[r];}
本研究设计了两种蜂窝结构机械超材料,具有可变的、依赖于拉伸或压缩的正负泊松比,并通过NOKOV度量动作捕捉验证了超材料的形变特性。 研究人员以《Mechanical Metamaterials with Discontinuous and Tension/Compression-Dependent Positive/Negative Po…
JAVA入门:使用IDE开发
什么是IDE
IDE(Integrated Development Environment,集成开发环境)是一种软件应用程序,它为程序开发、软件设计、项目管理等提供全面的设施。
简单来说就是简化开发过程,让编程更加方便。
IDEA
业界公认最好用的JAVA IDE
安装IDEA 打开IDEA官…
最大质因子序列 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 任意输入两个正整数m, n (1 < m < n < 5000),依次输出m到n之间每个数的最大质因子(包括m和n;…