我的思路是,既然是有序数组,就可以按照归并排序法的思路,按照最后的归并过程。 建立一个新的数组,并对两个数组及归并数组目前的位置分别编号i,j,k。 将两个数组中较小的值推入i的位置,然后将被提取数据的数组及归并数组索引+1。 这个过程中需要考虑的问题是如果其中一个数组已经全部提取完成应如何处置。 ...
分类:
编程语言 时间:
2017-03-28 22:04:17
阅读次数:
209
问题描述: 两个排序的数组A和B分别含有m和n个数,找到两个排序数组的中位数,要求时间复杂度应为O(log (m+n))。转化成找到两个数组的第K大数字进行解决 解题方法: 对于一个长度为n的已排序数列a,若n为奇数,中位数为a[n / 2 + 1] , 若n为偶数,则中位数(a[n / 2] + ...
分类:
编程语言 时间:
2017-03-27 21:39:21
阅读次数:
278
树1.树的优点有序数组: 查找很快,二分法实现的查找所需要的时间为O(logN),遍历也很快,但是在有序数组中插入,删除却需要先 找到位置, 在把数组部分元素后移,效率并不高。链表: 链表的插入和删除都是很快速的,仅仅需要改变下引用值就行了,时间仅为O(1),但是在链表中查找数据却需要遍历所有的元素 ...
分类:
编程语言 时间:
2017-03-19 01:01:04
阅读次数:
180
两个有序数组合并 关键点:从后往前进行比较,这样保证数组A有用的部分不会因为在合并的过程中覆盖掉 关键点:从后往前进行比较,这样保证数组A有用的部分不会因为在合并的过程中覆盖掉 第15节 有序数组合并练习题 有两个从小到大排序以后的数组A和B,其中A的末端有足够的缓冲空容纳B。请编写一个方法,将B合 ...
分类:
编程语言 时间:
2017-03-11 23:33:03
阅读次数:
183
介绍了插入排序和归并排序原理。 插入排序将数组中每个元素都与前面的所有元素比较,进行插入,循环一遍。 归并排序将数组分为有序的两组,两组的第一位元素比较,有序放入新数组中。 性能的分析: 引用theta渐进符号 θ θ:弃用低阶项,忽略常数因子。 EX: 3m³+2㎡+4554 = θ(m³) 通过 ...
分类:
编程语言 时间:
2017-03-11 20:29:39
阅读次数:
195
不使用jdk的集合类,通过遍历数组得到,因为数组是有序的,在遍历数组的时候,统计整数是否重复出现,如果没有重复出现计数加一,若重复出现则是计数减一。 java解决方法,时间复杂度O(n)。 ...
分类:
编程语言 时间:
2017-03-11 15:54:57
阅读次数:
156
题目链接: https://leetcode.com/problems/search-for-a-range/?tab=Description Problem: 在已知递减排序的数组中,查找到给定数字的起止下标 采用两遍扫描; 第一遍扫描得到给定数字的起始下标,(从下标i==0开始到nums.len ...
分类:
编程语言 时间:
2017-03-11 14:48:01
阅读次数:
194
题目链接: https://leetcode.com/problems/search-insert-position/?tab=Description 在给定的有序数组中插入一个目标数字,求出插入该数字的下标 由于该数组是已经排好序的数组,可以利用二分查找。 二分查找的返回结果: 1. 当查找的数字 ...
分类:
其他好文 时间:
2017-03-11 14:42:50
阅读次数:
126
题目链接: https://leetcode.com/problems/remove-duplicates-from-sorted-array/?tab=Description 从有序数组中移除重复数字,并且返回不重复数字的个数 遍历操作: 可以使用新的for循环 for (int n : nums ...
分类:
编程语言 时间:
2017-03-09 20:50:16
阅读次数:
167
1 #include "stdafx.h" #include"iostream" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int a[10]={1,4,4,5,6,7,7,8,9,10}; int i=0; int j= ...
分类:
编程语言 时间:
2017-03-09 00:01:12
阅读次数:
290