1 #include 2 #include 3 #include 4 using namespace std; 5 6 int a1[4001],a2[4001]; 7 int b1[4001],b2[4001]; 8 int sum1[4001*4000],sum2[4001*4000]...
分类:
其他好文 时间:
2015-07-14 20:23:35
阅读次数:
118
【二分查找,第k大,分治】两个有序的list,长度分别为m和n。用O(log(m+n))时间复杂度,在不合并为一个序列的情况下,找到中位数。
分类:
其他好文 时间:
2015-07-14 17:30:22
阅读次数:
94
二分查找的思想很好理解,但要写出没有bug的代码却并不是件容易的事。对于有序数组的二分查找,可以遵循一些套路快速写出无错代码。下面先给出二分查找有序数组的一些问题,所有问题参考了《编程之美》。1、给定非降序数组A,求任意一个i使得A[i]等于target,如不存在则返回-1。2、给定非降序数组A,求...
分类:
其他好文 时间:
2015-07-14 17:04:41
阅读次数:
135
题目235 Lowest Common Ancestor of a Binary Tree因为是binary search tree,因此利用没个节点的值进行二分查找即可复杂度O(h)class Solution: # @param {TreeNode} root # @param {T...
分类:
其他好文 时间:
2015-07-13 07:48:45
阅读次数:
105
思路: 利用二分查找,分别查找待统计数字的头和尾的下标,最后做差加一即为结果。C++: 1 #include 2 #include 3 using namespace std; 4 5 int GetFirstK(vector& nums, int startpos, int endpos,...
分类:
编程语言 时间:
2015-07-12 17:24:20
阅读次数:
146
1. 二分查找//递归版int binarySearch(const int arr[], int low, int high, int val){ if (low arr[mid]) return binarySearch(arr, mid+1, high, val)...
分类:
编程语言 时间:
2015-07-12 15:31:36
阅读次数:
222
题目描述假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。你需要找到其中最小的元素。http://www.lintcode.com/zh-cn/problem/find-minimum-in-rotated-sorted-array/解题思路基本思想采用二分查找,不过首先要判断这个排序数组是否直接有序,如果是0 1 2 3 4 5 6...
分类:
编程语言 时间:
2015-07-12 09:46:57
阅读次数:
162
最大K个数: 当数据量小时:快排和堆排O(Nlog(N));部分排序(选择or交换)O(N*K) 快排加分治O(N*log(K));二分查找当数据是整数且重复数比较多时:计数排序;若不是整数,则分区间计数。当数据量大时:1)小根堆:O(N*KlogK)2)分治法:hash成M份数据,取每份数据的前K...
分类:
其他好文 时间:
2015-07-11 22:46:10
阅读次数:
194
本学习笔记部分内容来自网易云课堂浙江大学数据结构课程,谢谢!
1、散列表(哈希表)
已知的几种查找方法:
顺序查找 O(N)
二分查找(静态查找) O(logN)
二叉搜索树 O(h) h为二叉树高度 (动态查找:有插入有删除有查找)
平衡二叉树 O(logN)
查找的本质:已知对象找位置
1、有序安排对象:全序或半序;
2、直接算出对象位置...
分类:
其他好文 时间:
2015-07-11 18:40:07
阅读次数:
253
http://acm.hdu.edu.cn/showproblem.php?pid=2516取石子游戏Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s):...
分类:
其他好文 时间:
2015-07-11 12:01:13
阅读次数:
156