数组算法题
文章平均质量分 55
数组算法题
一碗机智的糖浆
这个作者很懒,什么都没留下…
展开
-
41. 缺失的第一个正数(java实现)--1种解法(置换)LeetCode
文章目录题目:解法1:置换题目:给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1提示:1 <= nums.length <= 5 * 10^5-2^31 <= nums[i] <=原创 2022-02-18 23:35:40 · 404 阅读 · 0 评论 -
18. 四数之和(java实现)--2种解法(双指针,hash)LeetCode
文章目录题目:解法1:双指针解法2:hash题目:给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d < na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target你可以按 任意顺序 返回答案原创 2022-02-17 11:56:17 · 313 阅读 · 0 评论 -
189. 旋转数组(java实现)--3种解法(新建数组,移动k次,3次反转)LeetCode
文章目录题目:解法1:新建数组解法2:移动k次首位交换末尾交换新建数组解法3:3次反转题目:给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。示例 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]示例 2:输入:nums = [-1,-100,3,99原创 2022-02-15 10:58:40 · 844 阅读 · 0 评论 -
26. 删除排序数组中的重复项(java实现)--1种解法(双指针)LeetCode
文章目录题目:解法1:双指针题目:给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间原创 2022-02-15 09:30:02 · 336 阅读 · 0 评论 -
66. 加一(java实现)--2种解法(暴力,取模)LeetCode
文章目录题目:解法1:暴力解法1:暴力题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]原创 2022-02-14 09:38:43 · 172 阅读 · 0 评论 -
88. 合并两个有序数组(java实现)--3种解法(暴力,不建数组--从后往前,新建数组--从前往后)LeetCode
文章目录题目:解法1:暴力解法2:不建数组(从后往前)解法3:新建数组(从前往后)题目:给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0原创 2022-02-13 13:41:35 · 1657 阅读 · 0 评论 -
15. 三数之和(java实现)--3种解法(双指针,Hash,暴力)LeetCode
文章目录题目:解法1:双指针解法2:Hash解法3:暴力题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 &l原创 2022-02-10 10:54:21 · 1345 阅读 · 0 评论 -
1. 两数之和(java实现)--2种解法(暴力,hash)LeetCode
文章目录题目:暴力hash两次hash一次hash题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2原创 2022-02-09 08:46:14 · 296 阅读 · 0 评论 -
11. 盛最多水的容器(java实现)--2种解法(左右夹逼,暴力)LeetCode
文章目录题目:解法1:左右夹逼解法2:暴力题目:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分原创 2022-02-09 07:15:32 · 145 阅读 · 0 评论 -
283. 移动零(java实现)--2种解法(暴力,双指针)LeetCode
文章目录题目:解法1:暴力解法2:双指针题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例 1:输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]示例 2:输入: nums = [0]输出: [0]提示:1 <= nums.length <= 104-231 <= nums[i] <= 231 - 1进阶:你能尽量减少完成的原创 2022-02-08 16:39:41 · 834 阅读 · 0 评论 -
9. 回文数(java实现)--3种解法(暴力,数学,反转一半数字)LeetCode
文章目录题目:解法1:暴力法解法2:数学方法解法3:反转一半数字题目:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:fa原创 2022-02-05 07:47:00 · 1320 阅读 · 0 评论 -
70. 爬楼梯--4种解法(递归,递归-记忆数组,迭代-数组,迭代-累加)LeetCode
文章目录题目解法1:递归解法2:记忆数组解法3:迭代(累加)解法4:迭代(数组)题目70. 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3原创 2020-12-16 17:30:04 · 2809 阅读 · 0 评论 -
125. 验证回文串(java实现)--2种解法(反转字符串,双指针)LeetCode
文章目录题目:解法1:反转解法2:双指针题目:125. 验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false解法1:反转/** * 思路: * 过滤掉除字母和数字外的字符 * 把所有的字母统一大写或小写 * 反转字符串进行比较 *原创 2020-12-16 17:02:27 · 524 阅读 · 0 评论 -
509. 斐波那契数(java实现)--4种解法(递归,递归-记忆数组,迭代-数组,迭代-累加)LeetCode
文章目录题目解法1:递归解法2:迭代(记忆数组)解法3:迭代(变量)题目509. 斐波那契数斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定 N,计算 F(N)。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1.示例 2:输入原创 2020-12-15 11:44:17 · 430 阅读 · 0 评论