算法——数组
杨小帆_
沉下心来做技术
展开
-
LeetCode 48. 旋转图像
题目:48. 旋转图像类别:数组给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1],...原创 2019-01-24 11:56:47 · 87 阅读 · 0 评论 -
LeetCode 56. 合并区间
题目:56. 合并区间类型:数组给出一个区间的集合,请合并所有重叠的区间。示例 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,...原创 2019-01-28 11:14:03 · 1268 阅读 · 0 评论 -
LeetCode 73. 矩阵置零
题目:73. 矩阵置零类型:数组给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入: [ [0,1,2,0], [3,4...原创 2019-02-08 10:20:24 · 143 阅读 · 0 评论 -
LeetCode 80. 删除排序数组中的重复项 II
题目:80. 删除排序数组中的重复项 II类型:数组给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 ...原创 2019-02-09 09:09:20 · 192 阅读 · 0 评论 -
LeetCode 59. 螺旋矩阵 II
题目:59. 螺旋矩阵 II类型:数组给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]解题思路:很简单的直接使用四个循环一次安排每一圈的上右下左的值即可。代码: //0ms 超过100% ...原创 2019-02-09 10:14:10 · 126 阅读 · 0 评论 -
LeetCode 88. 合并两个有序数组
题目:88. 合并两个有序数组类型:数组给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,...原创 2019-02-10 08:58:44 · 94 阅读 · 0 评论 -
浅谈归并排序
对于归并排序大家应该都不陌生,归并排序和快速排序是两个比较重要的排序算法,我上次接触也是有一段时间之前了,正好这两天的算法分析课又再次提到了归并排序算法,所以特意写下这篇博文进行记录。一、总体思路对于归并排序主要有两种思路,一种是由上而下进行处理,另一种是由下而上进行合并排序。(一)由上而下的解法 对于由上往下的处理方式主要分为三步,即分解、求解和合并。...原创 2019-03-10 21:44:38 · 237 阅读 · 0 评论 -
浅谈线性时间的随机选择算法
一、算法引入 对于快速排序算法大家可能都不陌生,快排算法的思想就是随机或者从固定位置选取一个元素作为基准元素,然后将数组中大于它的元素都放到其右边,小于其的元素都放在其右边,且其左右并非有序的,通过这样我们可以确定基准元素在数组中的最终位置。 那么对于元素的查找,大家应该也是不陌生的,比如比较常用的查找算法如二分查找,它的时间复杂度也是比较理想的,为O(log2n)...原创 2019-03-15 18:51:40 · 1293 阅读 · 0 评论