4. 寻找两个正序数组的中位数
题目:
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
思路:建立一个新数组nums3,其大小为数组 nums1 和 nums2长度和,再对nums3排序,转化为在有序数组中找中位数。
本人弱点:
不知道下面三行代码可以快速取得中位数,而且也忘记要--才能得到正确下标。
int left=(n+1)/2;
int right=(n+2)/2;
nums3[--left]+nums3[--right])/2;
代码:
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int len1=nums1.length;
int len2=nums2.length;
int n=len1+len2;
int[] nums3=new int[n];
for(int i=0;i<len1;i++){
nums3[i]=nums1[i];
}
for(int i=len1,j=0;j<len2;i++,j++){
nums3[i]=nums2[j];
}
Arrays.sort(nums3);
int left=(n+1)/2;
int right=(n+2)/2;
double res=(double)(nums3[--left]+nums3[--right])/2; //位数和下标有区别
return res;
}
}
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术