算法-排序
拉丁解牛说技术
拉丁哥,10年+TOP金融互联网大厂开发经验,大道至简、行胜于言。用最少的代码+最直白的文字,分享JAVA技术栈。
展开
-
leetcode合并区间- 附有算法详细解析注释
给出一个区间的集合,请合并所有重叠的区间。 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 输入: [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。...原创 2018-08-29 18:16:32 · 1383 阅读 · 0 评论 -
两个数组的交集-Intersection of Two Arrays执行高效算法
给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [9,4] 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 题目很简单,我们可以利用hashset的特...原创 2018-09-04 17:09:04 · 1327 阅读 · 0 评论 -
两个数组的交集 II Intersection of Two Arrays II-巧妙使用list结构
给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出: [4,9] 说明: 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的顺序。 进阶:...原创 2018-09-04 18:13:44 · 265 阅读 · 0 评论 -
白话经典算法快速排序-快速搞定
快速排序算法和归并排序,都是由于时间复杂度只有O(N*logN),得到大量使用。快速排序的核心思想就是分而治之,我每次处理只负责将一个元素的位置排序正确,其他就先不管。那分而治之,递归处理后,所有元素都回到有序的正确位置,排序就完成了。 算法的时间复杂度,N就是因为,需要给每个元素都进行一次调整排序。而logN的时间复杂度,就是给元素调整排序,需要进行拆半数据递归。 算...翻译 2018-09-05 11:52:23 · 316 阅读 · 0 评论 -
排序链表Sort List-经典快速排序实现链表排序
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 基于快速排序思想去实现,而且链表的排序,在code里,我原创 2018-09-05 14:16:08 · 1406 阅读 · 0 评论