题目描述: 我的成绩: 成绩不是很好,代码本身写的也很乱,本文只是提供一种解题思路。 题目分析: 要求两有序数组的中位数并不难,简单粗暴的方法就是得到两数组合并后的新数组,取其中位数即可,但是难度在于这个时间复杂度有限制,为 O(log(m + n))。 一看这个log,那么很容易想到二分查找算法什 ...
分类:
编程语言 时间:
2020-02-18 20:26:51
阅读次数:
82
归并排序 1. 算法推导 对一个等待排序的数组A,以及排序函数sort,以及合并两个有序数组的函数merge。则 sort(A) = merge(sort(A1), sort(A2)),上面这个推导公式看起来是满足递归算法的重复条件。举个例子: 2. 代码实现 2.1 递归实现 2.2 非递归实现 ...
分类:
编程语言 时间:
2020-02-18 14:57:50
阅读次数:
74
问题 假设我们有 12 万条这样的 IP 区间与归属地的对应关系,如何快速定位出一个 IP 地址的归属地呢? 二分查找的变形 变体一:查找第一个值等于给定值的元素 1 public int bsearch(int[] a, int n, int value) { 2 int low = 0; 3 i ...
分类:
其他好文 时间:
2020-02-18 13:14:32
阅读次数:
82
概述 排序的思想有很多种,其中最基础的三种排序即,选择排序,插入排序,冒泡排序,下面通过数组中的元素排序代码来实现三种排序思想。 选择排序 使用到双指针思想,一个游历指针(用于遍历数组中所有元素, 出指定元素),一个标记指针(用于标记有序数组的末尾),使用到这种思想还可用于 ,`数组去除指定元素`等 ...
分类:
编程语言 时间:
2020-02-13 15:05:38
阅读次数:
61
LeetCode 0088. Merge Sorted Array合并两个有序数组【Easy】【Python】【双指针】 题目 "英文题目链接" Given two sorted integer arrays nums1 and nums2 , merge nums2 into nums1 as o ...
分类:
编程语言 时间:
2020-02-12 23:50:19
阅读次数:
89
这道题要求两个有序数组,找出中间位置的平均值; 解题思路: 1、取A数组的中间位置mid的值key,去B数组中查找最靠近key且小于等于key的位置index; 2、将原数组切成三段,index和mid之前数组的为新的left数组;right1跟right2为新的right数组;mid到right1 ...
分类:
其他好文 时间:
2020-02-12 12:51:16
阅读次数:
52
将有序链表转化为二叉搜索树。题目即是题意,跟[LeetCode] 108. Convert Sorted Array to Binary Search Tree可以一起做。108是从有序数组转化成BST,109是从有序链表转化成BST。区别在于108可以通过找中点的办法快速找到根节点,但是109只能 ...
分类:
其他好文 时间:
2020-02-11 10:10:48
阅读次数:
71
将有序数组转化为二叉搜索树。题目即是题意。只要输出一个有效的BST即可。此题可以跟109题一起做,要求很接近但是做法不太一样。例子, Example: Given the sorted linked list: [-10,-3,0,5,9], One possible answer is: [0,- ...
分类:
其他好文 时间:
2020-02-11 09:53:31
阅读次数:
59
给定两个大小为m和n的有序数组nums1和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m+n))。 你可以假设nums1和nums2不会同时为空。 题解 解法一 暴力法,即从头到尾找到合并数组的中位数。时间复杂度O(m+n) 解法二 看到log,要自然想到二分法 ...
分类:
编程语言 时间:
2020-02-10 18:01:10
阅读次数:
89