![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
zy_41015
这个作者很懒,什么都没留下…
展开
-
两数组的交 II
问题描述:计算两个数组的交样例:nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].解题思路:跟上面的数组的交类似,但是不同之处在于,每个元素出现次数得和在数组里一样。参考上一题的做法,我们依旧先对两个数组进行排序,再逐一比较两数组的元素。若数组1当中的元素小于当前位置数组2当中的元素,则此时数组2当中的指针保持不变,数字1当中的指针往后移;同理原创 2017-06-05 19:14:21 · 147 阅读 · 0 评论 -
整数排序 II
问题描述:给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。样例:给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。解题思路:根据题目要求,可以使用归并排序,快速排序与堆排序。这里选择一种我比较熟悉的快速排序。归并排序的思想为找到一个基准元素,通过排序使得左边的值都比中间值小,右边的数都比中间值大。原创 2017-06-05 19:23:59 · 172 阅读 · 0 评论 -
两数之和
问题描述:给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。样例:给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2].解题思路:给出一个特定的值,在两个数组中找到它的加数,并且第一个数组原创 2017-06-05 19:32:52 · 218 阅读 · 0 评论 -
中位数
问题描述:给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。样例:给出数组[4, 5, 1, 2, 3], 返回 3 给出数组[7, 9, 4, 5],返回 5解题思路:求数组的中位数,首先应该对数组进行排序。如果数组中元素个数为奇数,则第(n/2+1)个数为该数组的中位数。如果数组中元素个数为偶数,则(n/原创 2017-06-05 19:41:48 · 537 阅读 · 0 评论 -
整数排序
问题描述:给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。样例:对于数组 [3, 2, 1, 4, 5], 排序后为:[1, 2, 3, 4, 5]。解题思路:给出一个数组,要求把它从小到大排列。可以直接使用sort函数来实现。实现代码:class Solution {public: /** * @param原创 2017-06-05 19:48:00 · 208 阅读 · 0 评论 -
合并区间
问题描述:给出若干闭合区间,合并所有重叠的部分。样例:给出的区间列表 => 合并后的区间列表:[ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18]原创 2017-06-08 16:54:02 · 271 阅读 · 0 评论 -
两数组的交
问题描述:返回两个数组的交样例:nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].解题思路:给了两个数组,求取两个数组的交集。我最先想到的是,先将这两个数组从小到大排序,然后逐个比较,有相同的就把它挑出来,放到一个新的vector 向量当中,直至比较完所有的元素。但是在比较的过程当中,要注意两个数组的长度可能不相等,这个时候应该分情况进行讨论。实原创 2017-06-05 19:02:58 · 186 阅读 · 0 评论 -
排序总结
答题情况:感想:通过做排序这一部分的题,进一步体会各个不同的排序方法的异同点。重点掌握快速排序,堆排序,希尔排序。针对各个不同的问题,具体情况具体分析,可以进一步体会上一个学期学过的vector 应用方法。从时间复杂度来看,直接插入排序,直接选择排序,和起泡排序是一类,其时间复杂度都是O(n2)的。堆排序,快速排序,归并排序属于第二类,时间复杂度是O(nlog2n)。希尔排序介于O(n2)与O原创 2017-06-15 16:28:21 · 187 阅读 · 0 评论