剑指OFFER 数据流中的中位数 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法 ...
分类:
其他好文 时间:
2020-02-06 16:25:40
阅读次数:
68
"传送门" 思路 因为交换同一列的相邻两行,这一列的总数不变;交换同一行的相邻两列,这一行的总数不变。 那么如果可以平均分配的话,可以先将所有行都分配好,然后再将所有列分配好。 这样就变成了做两次环形纸牌分配问题, 给一个数列,最后一位和第一位相邻,问能否平均分配,最少需要传递多少次。 首先考虑普通 ...
分类:
其他好文 时间:
2020-02-04 20:36:52
阅读次数:
85
"寻找两个有序数组的中位数" 题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1 示例 2 思路1 第一种简单的思路 ...
分类:
编程语言 时间:
2020-02-01 19:32:12
阅读次数:
74
「CQOI2009」中位数 "传送门" 这道题将会用到一点桶的思想。 首先我们可以在排列中先找到 $b$ 的位置(找不到的话就直接输出 $0$)。 然后我们从 $b$ 的位置(设为 $p$)开始拓展,容易发现有三种情况: + $b$ 在子段左边界 + $b$ 在子段右边界 + $b$ 在子段中间位置 ...
分类:
其他好文 时间:
2020-01-31 22:52:47
阅读次数:
79
面试题41:数据流中的中位数 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 所谓数据流,就是不会一次性读入所有数据,只能一个一个读取,每一步都要求能 ...
分类:
其他好文 时间:
2020-01-31 20:31:52
阅读次数:
72
采用希尔排序 1 #include <stdio.h> 2 3 #define MAXN 10 4 typedef float ElementType; 5 6 ElementType Median( ElementType A[], int N ); 7 8 int main () 9 { 10 ...
分类:
其他好文 时间:
2020-01-26 10:30:52
阅读次数:
166
/* 算法: 数组的复制,反转,查找(线性查找,二分查找) */ import java.util.Scanner; public class arrayCopyReverseSearch { public static void main(String[] args) { String[] arr ...
分类:
编程语言 时间:
2020-01-24 00:18:42
阅读次数:
109
链表: 快慢指针:一个慢指针(一次走一步)一个快指针(一次走两步) 应用:判断链表是否有环,判断环的入口位置,求中位数,求倒数第k位等 判断链表是否有环:直接一快一慢去走,如果能碰到,那么说明有环,如果快指针走到NULL,那么无环 判断环入口位置:一快一慢走去,如果碰到了,那么将,慢指针放回入口,然 ...
分类:
编程语言 时间:
2020-01-23 18:22:22
阅读次数:
85
思路与 "中位数" 一题,解决方案比较像,使用对顶堆来解决。 具体实现为,使用两个堆,大根堆维护较小的值,小根堆维护较大的值,即小根堆的堆顶是较大的数中最小的,大根堆的堆顶是较小的数中最大的。 将大于大根堆堆顶的数(比所有大根堆中的元素都大)的数放入小根堆,小于等于大根堆堆顶的数(比所有小根堆中的元 ...
分类:
其他好文 时间:
2020-01-22 23:47:49
阅读次数:
88
这里我有两种解法,第一种执行时间是157ms,通过两个for循环排序(有点多余)效率比较慢: class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int len1 = nums1.leng ...
分类:
编程语言 时间:
2020-01-22 16:01:11
阅读次数:
65