数组
leetCode涉及数组的题目
消灭猕猴桃
保持热爱,奔赴山海
展开
-
[leetCode]566. 重塑矩阵
题目https://leetcode-cn.com/problems/reshape-the-matrix/模拟填充重塑数组的一行填充满后换一行继续填充class Solution { public int[][] matrixReshape(int[][] nums, int r, int c) { int rows = nums.length; int cols = nums[0].length; if (rows * cols !=原创 2021-02-17 09:51:53 · 111 阅读 · 0 评论 -
[leetCode]119.杨辉三角 II
动态规化使用一个列表保存杨辉三角每一行的值,初始化第0行为[1],后面的几行都可以由前一行计算得到,最后返回最后一行。class Solution { public List<Integer> getRow(int rowIndex) { List<List<Integer>> dp = new ArrayList<>(); dp.add(new ArrayList<>()); dp.g.原创 2020-07-12 08:49:59 · 103 阅读 · 0 评论 -
[leetCode]724. 寻找数组的中心索引
题目https://leetcode-cn.com/problems/find-pivot-index/前缀和使用前缀和来快速计算数组某个范围内的和class Solution { public int pivotIndex(int[] nums) { int n = nums.length; int[] sum = new int[n + 1]; for (int i = 1; i <= n; i++) {原创 2021-01-28 09:42:55 · 68 阅读 · 0 评论 -
[leetCode]1128. 等价多米诺骨牌对的数量
题目https://leetcode-cn.com/problems/number-of-equivalent-domino-pairs/计数统计等价的二元对有多少个,把二元对转化为相同的格式,即第一维不大于第二维,由于二元对的元素都不大于9所以,二元对可以转化为一维 即 10 * x + y,这样用一个长度为100的数组即可class Solution { public int numEquivDominoPairs(int[][] dominoes) { int[]原创 2021-01-26 17:10:51 · 107 阅读 · 0 评论 -
[leetCode]面试题04.二维数组
暴力法class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if(matrix == null) return false; for(int i = 0; i < matrix.length; i++){ for(int j = 0; j <matrix[i].length; j++){ i原创 2020-07-22 09:21:41 · 106 阅读 · 0 评论 -
[leetCode]989. 数组形式的整数加法
题目https://leetcode-cn.com/problems/add-to-array-form-of-integer/逐位相加取出K的最后一位与A的最后一位相加,如果发生进位则将进位加在K上class Solution { public List<Integer> addToArrayForm(int[] A, int K) { List<Integer> ans = new ArrayList<>(); i原创 2021-01-22 10:34:14 · 71 阅读 · 0 评论 -
[leetCode]1018. 可被 5 整除的二进制前缀
题目https://leetcode-cn.com/problems/binary-prefix-divisible-by-5/模拟i > 1时N_i = N_i-1 * 2 + A[i],由于A很长所以需要注意溢出的情况,N_i = (N_i-1 * 2 + A[i])mod 5class Solution { public List<Boolean> prefixesDivBy5(int[] A) { int n = A.length;原创 2021-01-14 09:57:40 · 114 阅读 · 0 评论 -
[LeetCode]1431.拥有最多糖果的孩子
这道题比较简单解题思路就是先通过遍历找到拥有最多糖果的孩子有几颗糖果,再把多余的糖果分配给所有孩子,判断该孩子的糖果数是否比拥有最多糖果的孩子多,是为true,否为false。c++class Solution {public: int Max(vector<int>& candies){ int max = 0; for(int i = 0; i < candies.size(); i++) { if(can.原创 2020-06-01 08:57:32 · 519 阅读 · 0 评论 -
[LeetCode]面试题29.顺时针打印矩阵
解法一解法一通过模拟运动路径打印矩阵,通过判断下个位置是否越界、下个位置是否已访问来控制顺时针旋转。判断元数位置是否已经访问需要用到一个辅助数组visited,每访问一个位置就把visited对应位置进行标记。javaclass Solution { public int[] spiralOrder(int[][] matrix) { if(matrix == null || matrix.length == 0 || matrix[0].length == 0){原创 2020-06-05 10:32:59 · 273 阅读 · 0 评论 -
[leetCode]66. 加一
解法数组每一位只能包含一位数字,只有当数字大于9时才会产生进位,所以只需要从后往前遍历,每次加上进位,当下一位需要进位时j置一,否则置0。循环结束时如果首位为0则需要扩容数组并将首位置1。class Solution { public int[] plusOne(int[] digits) { int len = digits.length; int j = 1;//进位 for(int i = len - 1; i >= 0; --i){.原创 2020-06-29 08:19:28 · 97 阅读 · 0 评论 -
[leetCode]面试题 01.07. 旋转矩阵
辅助数组将旋转结果放入辅助数组,再将辅助数组得到的结果复制到matrix指向的内存空间。原数组中的元素matrix[row][col]旋转之后变为matrix[col][n- row -1]class Solution { public void rotate(int[][] matrix) { int n = matrix.length; int[][] newMatrix = new int[n][n]; for(int row = 0; .原创 2020-07-28 09:28:43 · 107 阅读 · 0 评论 -
[leetCode]945.使数组唯一的最小增量
排序 + 遍历计数我的思路是对数组进行排序,然后对排序后的数组从前向后进行遍历。如果出现重复数字则将其递增,同时记录操作次数。class Solution { public int minIncrementForUnique(int[] A) { int count = 0; Arrays.sort(A); for(int i = 0; i < A.length; i++){ int j = i + 1; .原创 2020-07-27 15:26:52 · 125 阅读 · 0 评论 -
[leetCode]剑指 Offer 29. 顺时针打印矩阵
解法首先需要将一个矩阵顺时针打印,则可以想到把矩阵分为几个圈,使用循环每次打印一圈,从外圈向内圈打印。然后考虑循环的终止条件。打印第一圈矩阵的左上角坐标为(0,0),打印第二圈左上角坐标为(1,1),以此类推可以发现每一圈的左上角坐标的行标与列标总是相同的。将每圈左上角坐标记为(start,start)。对于55矩阵,其最内圈为一个数字坐标为(2 ,2) , 5 > 22。对于66矩阵,其最内圈左上角坐标为(2,2),6> 22。所以循环条件为:矩阵行数> 2start 且 .原创 2020-08-24 10:02:00 · 193 阅读 · 0 评论 -
[leetCode]剑指 Offer 51. 数组中的逆序对
解法可以使用归并排序的方法将数组分解成子数组,将子数组归并排序统计子数组的逆序数,最终统计整个数组的逆序数。class Solution { public int reversePairs(int[] nums) { if(nums == null || nums.length == 0) return 0; int[] copy = Arrays.copyOf(nums, nums.length); int count.原创 2020-09-14 14:56:24 · 274 阅读 · 0 评论 -
[leetCode]剑指 Offer 66. 构建乘积数组
解法把A数组分为两部分:A[0,...,i-1]A[i+1,...,n-1]数组B可以用一个矩阵创建:另C[i]为矩阵第i行左半部分的乘积,D[i]为矩阵第i行右半部分的乘积。C[i]可以自上而下计算:C[i] = C[i-1] * A[i-1],D[i]可以自下而上计算:D[i] = D[i+1]*A[i+1],所以B[i] = C[i] * D[i]class Solution { public int[] constructArr(int[] a) { if.原创 2020-09-29 08:02:28 · 80 阅读 · 0 评论 -
[leetCode]59. 螺旋矩阵 II
模拟模拟顺时针画矩阵过程填充上行,从左到右填充右列,从上到下填充下行,从右到左填充左列,从下到上画一圈需要画四条边,需要注意的是每画一条边都需要遵循「左闭右开」原则,也就是说每一条边的画法要相同,不然代码会越写越乱。下面按照左闭右开原则画一圈:每一种颜色代表一条边,在拐角处画新的边。class Solution { public int[][] generateMatrix(int n) { // 定义一个二维数组 int[][] ans.原创 2020-10-23 16:19:24 · 89 阅读 · 0 评论 -
[leetCode]1207. 独一无二的出现次数
博客园:题目链接:https://leetcode-cn.com/problems/unique-number-of-occurrences给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。示例 2:输入:arr = .原创 2020-10-28 09:23:41 · 176 阅读 · 1 评论