
数组合集
数组总结
斌同学斌同學
长路漫漫,乞相伴而行啊
展开
-
(数组)59. 螺旋矩阵 II
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]题解思路实现代码public class Solution02 { public int[][] generateMatrix(int n) { int[][] matrix = new int[n][n]; int left = 0, right =原创 2020-09-07 15:41:35 · 147 阅读 · 0 评论 -
(数组)54. 螺旋矩阵
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]题解思路实现代码public class Solution {原创 2020-09-07 15:21:46 · 127 阅读 · 0 评论 -
(数组)6. 无序数组中找出第K大的元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4题解思路每次切分操作总能排定一个元素,还能够知道这个元素它最终所在的位置,这样每经过一次 partition(切分)操作就能缩小搜索的范围实现代码public class Solution { public原创 2020-09-04 23:52:36 · 639 阅读 · 0 评论 -
(数组)8. 快速排序
题解思路先对二维数组按区间左端点大小排序,然后依次入栈若栈内区间右端点小于当前区间左端点,则两个区间无重叠部分,直接将当前区间入栈若栈内区间右端点大于当前区间左端点,则说明两区间存在重叠部分,更新栈内区间右端点值,取最大实现代码public static void quickSort(int[] array) { int len; if(array == null || (len = array.length) == 0 || len原创 2020-09-03 14:56:59 · 895 阅读 · 0 评论 -
(数组)2. 合并区间(leedcode.56)(快手)
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。题解思路先对二维数组按区间左端点大小排序,然后依次入栈若栈内区间右端点小原创 2020-09-03 11:48:02 · 238 阅读 · 0 评论 -
(数组)15. 三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]题解思路首先对数组进行排序,排序后固定一个数 nums[i],再使用左右指针指向 nums[i]后面的两端,数字分别为 nums[L] 和 nu原创 2020-09-03 11:05:57 · 212 阅读 · 0 评论