首页 > 编程知识 正文

有两个从小到大排好序的数组,python 数组排序

时间:2023-05-03 06:33:41 阅读:267344 作者:898

/** * 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))=Ologm*Ologn。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 示例 2: nums1 = [1, 2] nums2 = [3, 4] 则中位数是 (2 + 3)/2 = 2.5 */ public class Solution1 { static AtomicInteger count=new AtomicInteger(0); public static double findMedianSortedArrays(int[] nums1, int[] nums2) { TreeSet<Integer> treeSet=new TreeSet<Integer>(); for (int i : nums1) { treeSet.add(i); } Arrays.stream(nums2).forEach(i ->treeSet.add(i)); Iterator<Integer> iterator = treeSet.iterator(); double[] result=new double[treeSet.size()]; double i = treeSet.size() % 2; int i1 = treeSet.size() / 2; while (iterator.hasNext()){ Integer next = iterator.next(); result[count.intValue()]=next; count.incrementAndGet(); } if(i!=0){ return result[result.length/2]; }else{ return (result[i1-1]+result[i1])/2; } } public static void main(String[] args) { int[] nums1 = {1, 3}; int[] nums2 = {2}; double v = findMedianSortedArrays(nums1, nums2); System.out.println(v); }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。