数组
数组
alibaba_张无忌
实X证明&盖璋~
展开
-
59. 螺旋矩阵 II
二维数组实现螺旋矩阵原创 2022-03-14 19:17:14 · 601 阅读 · 0 评论 -
NC30 缺失的第一个正整数 -java解法
描述给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数进阶:你能用O(n)时间复杂度并且O(1)的空间复杂度的方法实现吗数据范围:-231<=nums[i]<=231-10<=len(nums)<=5*105示例1输入:[1,0,2]复制返回值:3import java.util.*;public class Solution { public int minNumberDisappeared (in...原创 2021-10-26 20:02:40 · 228 阅读 · 0 评论 -
66. 加一
class Solution { public int[] plusOne(int[] digits) { //如果最后一位是9 前面的+1 当前值为0 // 如果都是9 那么都变为0了 ,此时需要新开辟一个数组,长度+1 第一个位置是1 for(int i=digits.length-1;i>=0;i--){ if(digits[i]==9){ ...原创 2021-05-29 16:19:42 · 100 阅读 · 0 评论 -
304. 二维区域和检索 - 矩阵不可变
给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。这个的话考察二维前缀和公式: sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+matrix[i-1][j-1];自己看下图就可以自己推出来的!class NumMatrix { int sum[][]; public NumMatrix(int[][] matr...原创 2021-05-27 17:17:22 · 66 阅读 · 0 评论 -
303. 区域和检索 - 数组不可变
给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。输入:["NumArray", "sumRange", "sumRange", "sumRange"][[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]输出:[null, 1, -1, -3]解释:NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);numArra...原创 2021-05-27 17:03:08 · 71 阅读 · 0 评论 -
48. 旋转图像
给定一个 n×n 的二维矩阵matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像class Solution { public void rotate(int[][] matrix) { int [][] matrix_new=new int[matrix.length][matrix[0].length]; //原来的(i,...原创 2021-05-27 16:51:08 · 114 阅读 · 0 评论 -
566. 重塑矩阵
给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。输入:nums =[[1,2],[3,4]]r = 1, c = 4输出:[[1,2,3,4]]解释:行遍历nums的结果是 [1,2,3,4]。新的矩阵是 1 * 4 矩阵, 用之前的元素值一行一行填充新矩阵。来源:力扣(LeetCode)链接:https://leetcode-cn.c...原创 2021-05-27 16:47:34 · 85 阅读 · 0 评论 -
59. 螺旋矩阵 II
class Solution { public int[][] generateMatrix(int n) { int [] [] arr=new int[n][n]; int left=0,right=n-1,up=0,down=n-1; int flag=1; while(true){ //向右 for(int i=left;i<=right;i++){ ...原创 2021-05-27 16:29:41 · 67 阅读 · 0 评论 -
54. 螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。模拟class Solution { public List<Integer> spiralOrder(int[][] matrix) { //保存结果的 List<Integer> list=new ArrayList(); //大模拟 //定义左边界 int ..原创 2021-05-27 16:13:09 · 69 阅读 · 0 评论 -
396.旋转函数
给定一个长度为 n 的整数数组A。计算F(0), F(1), ..., F(n-1)中的最大值。A = [4, 3, 2, 6]F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 + 3 + 4 + 18 = 25F(1) = (0 * 6) + (1 * 4) + (2 * 3) + (3 * 2) = 0 + 4 + 6 + 6 = 16F(2) = (0 * 2) + (1 * 6) + (2 * 4) + (3 * 3)...原创 2021-05-27 15:28:59 · 99 阅读 · 0 评论 -
189. 旋转数组
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为O(1) 的原地算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4...原创 2021-05-27 15:02:17 · 53 阅读 · 0 评论 -
665. 非递减数列
给你一个长度为n的整数数组,请你判断在 最多 改变1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的:对于数组中任意的i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。示例 1:输入: nums = [4,2,3]输出: true解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例 2:输入: nums = [4,2,1]输出: false解释: 你不能在只...原创 2021-05-27 14:29:22 · 66 阅读 · 0 评论 -
453. 最小操作次数使数组元素相等
给定一个长度为 n 的 非空 整数数组,每次操作将会使 n - 1 个元素增加 1。找出让数组所有元素相等的最小操作次数。示例:输入:[1,2,3]输出:3解释:只需要3次操作(注意每次操作会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]class Solution { public int minMoves(int[] nums) { //每次对n-1个数加一,相...原创 2021-05-27 09:48:27 · 135 阅读 · 0 评论 -
448. 找到所有数组中消失的数字
给定一个范围在1 ≤ a[i] ≤ n (n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]class Solution { public List<Integer> findDisappear...原创 2021-05-27 09:33:50 · 101 阅读 · 0 评论 -
442 数组中重复的数据
给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]class Solution { public List<Integer> findDuplicates(int[] nums) { List<Integer> li.原创 2021-05-27 09:16:57 · 62 阅读 · 0 评论 -
697. 数组的度
697. 数组的度给定一个非空且只包含非负数的整数数组nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在 nums 中找到与nums拥有相同大小的度的最短连续子数组,返回其长度。示例 1:输入:[1, 2, 2, 3, 1]输出:2解释:输入数组的度是2,因为元素1和2的出现频数最大,均为2.连续子数组里面拥有相同度的有如下所示:[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2,...原创 2021-05-26 11:51:30 · 108 阅读 · 0 评论 -
645. 错误的集合
集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入:nums = [1,2,2,4]输出:[2,3]示例 2:输入:nums = [1,1]输出:[1,2]新开一个数组,记录元素出现的次数 如果新数组里面...原创 2021-05-26 11:01:41 · 100 阅读 · 0 评论 -
628. 三个数的最大乘积
给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入:nums = [1,2,3]输出:6示例 2:输入:nums = [1,2,3,4]输出:24示例 3:输入:nums = [-1,-2,-3]输出:-6如果全正 全﹣ 两个-一个+ 则最大值是int max1=nums[nums.length-1]*nums[nums.length-2]*nums[nums.length-3]; 如果两个+ 一个- 则最大值...原创 2021-05-26 10:36:56 · 66 阅读 · 0 评论 -
414. 第三大的数
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。示例 1:输入:[3, 2, 1]输出:1解释:第三大的数是 1 。把元素都插入TreeSet里面,他会自动升序排列 在插入过程中,一直维护一个长度为3的,如果大于3,那么删除最小的那个 插入完毕 没有第三个 就返回最后一个(最大值) ,否则返回第一个(一直维护第一个是倒数第三大的)class Solution { public int thirdMax(int[] nums) ...原创 2021-05-26 10:13:24 · 107 阅读 · 0 评论 -
495. 提莫攻击 有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。示例1:输入: [1,4], 2输出: 4原因: 第 1 秒初,提莫开始对艾希进行攻击并使其立即中毒。中毒状态会维持 2 秒钟,直到第 2 秒末结束。第 4 秒初,提莫再次攻击艾希,使得艾希获得另外 2 秒中毒时间。所以最.原创 2021-05-26 09:54:38 · 493 阅读 · 0 评论 -
485. 最大连续 1 的个数 给定一个二进制数组, 计算其中最大连续 1 的个数。
原题连接:https://leetcode-cn.com/problems/max-consecutive-ones/进入给定一个二进制数组, 计算其中最大连续 1 的个数。示例:输入:[1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.就简单的遍历即可(当然也可用滑动窗口,滑动窗口在另一个专题,这里不贴了就先) 当前元素是1 临时变量+1 , 与MAX比较,决定是否更新MAX 返回MAXc...原创 2021-05-26 09:39:03 · 397 阅读 · 0 评论