2026/5/21 16:48:02
网站建设
项目流程
网站平台搭建要多少,深圳设计网站有哪些,河南建设厅证件查询平台,网站建设资料 优帮云题目链接#xff1a;1385. 两个数组间的距离值#xff08;简单#xff09; 算法原理#xff1a; 大致思路与#x1f447;相同#xff0c;这题还稍微简单些 D.二分查找-进阶——2300. 咒语和药水的成功对数 解法#xff1a;二分查找 对于arr1中的每一个元素x#xff0c;…题目链接1385. 两个数组间的距离值简单算法原理大致思路与相同这题还稍微简单些D.二分查找-进阶——2300. 咒语和药水的成功对数解法二分查找对于arr1中的每一个元素x不符合题意的区间是[x-d,xd]所以可以对arr2排序进行二分来找最左端点x-d或者最右端点xd思路一找最左端点模型解法7ms击败38.02%时间复杂度O(Nlogn)找最左端点x-d如果没有x-d那么最终left的位置是x-d右侧的①如果该数小于x-d说明此时left在最后一个位置数组arr2中所有元素均小于x-d自然符合题意ret②如果该数大于xd说明此时left在第一个位置数组arr2中所有元素均大于xd自然符合题意ret思路二找最右端点模型解法7ms击败38.02%时间复杂度O(Nlogn)找最右端点xd如果没有xd那么最终left的位置是xd左侧的其余均与思路一相同Java代码class Solution { public int findTheDistanceValue(int[] arr1, int[] arr2, int d) { int narr2.length,ret0; Arrays.sort(arr2); for(int x:arr1){ //找最左端点模型解法 int tx-d; int left0,rightn-1; while(leftright){ int midleft(right-left)/2; if(arr2[mid]x-d) leftmid1; else rightmid; } //arr2[left]x-d:说明所有的数都比x-d小全符合条件 //arr2[left]xd:说明所有的数都比x-d大全符合条件 if(arr2[left]x-d||arr2[left]xd) ret; } return ret; } }class Solution { public int findTheDistanceValue(int[] arr1, int[] arr2, int d) { int narr2.length,ret0; Arrays.sort(arr2); for(int x:arr1){ //找最右端点模型解法 int tx-d; int left0,rightn-1; while(leftright){ int midleft(right-left1)/2; if(arr2[mid]xd) rightmid-1; else leftmid; } //arr2[left]x-d:说明所有的数都比x-d小全符合条件 //arr2[left]xd:说明所有的数都比x-d大全符合条件 if(arr2[left]x-d||arr2[left]xd) ret; } return ret; } }