leetcode-数组
KobeSacre
这个作者很懒,什么都没留下…
展开
-
矩阵置零
解题思路: 遍历数组遇到为 0 的元素则将该行第一个元素和该列第一个元素置 0, 之后对每一行/列的第一个元素进行判断, 如果为 0 则将该行/列的元素都置为0, matrix[0][0] 需要特殊处理, 分别遍历第一行和第一列判断是第一行的元素中包含 0 还是第一列的元素中包含 0。原创 2023-10-09 16:01:40 · 576 阅读 · 0 评论 -
有效的数独
解题思路: 分别创建三个数组对行, 列, 3 x 3 方格的数字进行校验即可。原创 2023-09-13 15:58:40 · 127 阅读 · 0 评论 -
罗马数字转整数
解题思路2: 如果小的数字在大的数字的右边,那么可以将每个字符视作一个单独的值,累加每个字符对应的数值,如果一个数字右侧的数字比它大,则将该数字的符号取反。解题思路1: 直接代码模拟。原创 2023-08-31 14:37:46 · 298 阅读 · 0 评论 -
加油站
解题思路: 将每一个下标的 gas - cost 计算出来并相加记为 totalGas, 如果 totalGas > 0 说明: 加油量 > 油耗, 也就表明存在一个起点可以跑完全程, 再定义一个变量 currentGas 用于记录起点到当前下标位置的油耗, 如果 currentGas < 0 说明当前起点无法跑完全程, 将起点重置为当前下标 + 1, 然后再进行计算。原创 2023-08-29 17:37:44 · 130 阅读 · 0 评论 -
H 指数
解题思路: 先统计每个引用次数的论文数量, 然后再找到满足条件的最大H指数。原创 2023-08-22 16:24:27 · 797 阅读 · 1 评论 -
和为s的连续正数序列
leetcode原创 2022-10-27 11:22:34 · 108 阅读 · 0 评论 -
0~n-1中缺失的数字
leetcode原创 2022-10-21 14:32:56 · 86 阅读 · 0 评论 -
第一个只出现一次的字符
leetcode原创 2022-10-10 11:12:42 · 101 阅读 · 0 评论 -
把数组排成最小的数
leetcode原创 2022-10-08 16:53:28 · 106 阅读 · 0 评论 -
最小的k个数
leetcode原创 2022-09-29 12:06:19 · 121 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
调整数组顺序使奇数位于偶数前面原创 2022-09-07 14:19:27 · 112 阅读 · 0 评论 -
最小时间差
最小时间差题目:给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。示例 1:输入:timePoints = ["23:59","00:00"]输出:1示例 2:输入:timePoints = ["00:00","23:59","00:00"]输出:0class Solution { public int findMinDifference(List<String> timePoints) {原创 2022-04-14 11:00:11 · 433 阅读 · 0 评论 -
二维子矩阵的和
二维子矩阵的和题目:给定一个二维矩阵 matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。实现 NumMatrix 类:NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进行初始化int sumRegion(int row1, int col1, int row2, int col2) 返回左上角 (row1, col1) 、右下角 (row2, col2) 的子矩原创 2022-02-12 17:17:13 · 299 阅读 · 0 评论 -
区域和检索 - 数组不可变
区域和检索 - 数组不可变题目:给定一个整数数组 nums,处理以下类型的多个查询:计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= right实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 ,包含 left 和 right 两点(也原创 2022-02-12 16:49:20 · 706 阅读 · 0 评论 -
0 和 1 个数相同的子数组
0 和 1 个数相同的子数组题目:给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。示例 1:输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例 2:输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量 0 和 1 的最长连续子数组。class Solution { public int findMaxL原创 2022-02-12 16:28:55 · 356 阅读 · 0 评论 -
左右两边子数组的和相等
左右两边子数组的和相等题目:给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:中心下标是 3 。左侧数原创 2022-02-10 11:17:23 · 197 阅读 · 0 评论 -
乘积小于 K 的子数组
乘积小于 K 的子数组题目:给定一个正整数数组 nums和整数 k ,请找出该数组内乘积小于 k 的连续的子数组的个数。示例 1:输入: nums = [10,5,2,6], k = 100输出: 8解释: 8 个乘积小于 100 的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于100的子数组。示例 2:输入: nums = [1,2,3], k = 0输出: 0原创 2022-02-09 11:14:58 · 243 阅读 · 0 评论 -
二进制加法
二进制加法题目:给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "10"输出: "101"示例 2:输入: a = "1010", b = "1011"输出: "10101" 提示:每个字符串仅由字符 '0' 或 '1' 组成。1 <= a.length, b.length <= 10^4字符串如果不是 "0" ,就都不含前导零解题思原创 2022-02-07 11:24:46 · 350 阅读 · 0 评论 -
搜索二维矩阵(二)
搜索二维矩阵(二)题目:描述写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每一列的整数从上到下是排序的。在每一行或每一列中没有重复的整数。样例样例 1:输入:矩阵 = [[3,4]]target = 3输出:1解释:矩阵中只有1个3。样例 2:输入:矩阵 = [ [1, 3, 5, 7], [2, 4, 7, 8], [3, 5, 9, 10] ]target原创 2021-07-28 11:30:10 · 106 阅读 · 0 评论 -
奇偶分割数组
奇偶分割数组题目:描述分割一个整数数组,使得奇数在前偶数在后。答案不唯一。你只需要给出一个合法的答案。样例样例1:输入: [1,2,3,4]输出: [1,3,2,4]样例2:输入: [1,4,2,3,5,6]输出: [1,3,5,4,2,6]解题思路:有一种直观的思路是生成一个临时数组然后分别将奇偶数放进临时数组,另一种思路是运用快速选择将奇偶数分割开来public class Solution { /* * @param nums: an array o原创 2021-07-20 16:43:33 · 149 阅读 · 0 评论 -
数组划分
数组划分题目:描述给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:所有小于k的元素移到左边所有大于等于k的元素移到右边返回数组划分的位置,即数组中第一个位置 i,满足 nums[i] 大于等于 k。你应该真正的划分数组 nums,而不仅仅只是计算比 k 小的整数数,如果数组 nums 中的所有元素都比 k 小,则返回 nums.length。0 <= nums.length <= 20000<=nums.length<原创 2021-07-20 14:25:38 · 422 阅读 · 0 评论 -
颜色分类 II
颜色分类 II描述给定一个有n个对象(包括k种不同的颜色,并按照1到k进行编号)的数组,将对象进行分类使相同颜色的对象相邻,并按照1,2,...k的顺序进行排序。不能使用代码库中的排序函数来解决这个问题k <= n样例样例1输入: [3,2,2,1,4] 4输出: [1,2,2,3,4]样例2输入: [2,1,1,2,2] 2输出: [1,1,2,2,2]public class Solution { /** * @param colors:原创 2021-07-16 15:32:16 · 116 阅读 · 0 评论 -
交错正负数
交错正负数题目:描述给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。不需要保持正整数或者负整数原来的顺序。样例样例 1输入 : [-1, -2, -3, 4, 5, 6]输出 : [-1, 5, -2, 4, -3, 6]解释 : 或者任何满足条件的答案 解题思路:先判断正负数哪个出现的次数更多,然后将出现次数多的放在数组左边,最后用双指针将首尾进行交换即可public class Solution { /* * @param A: An in原创 2021-07-15 16:56:45 · 121 阅读 · 0 评论 -
字符大小写排序
字符大小写排序题目:描述给定一个只包含字母的字符串 chars,按照先小写字母后大写字母的顺序进行排序。对于不同的语言,chars将以不用的形式给出,例如对于字符串 "abc" ,将以下面的形式给出Java: char[] chars = {'a', 'b', 'c'};Python:chars = ['a', 'b', 'c']C++:string chars = "abc";你需要实现原地算法解决这个问题。字母不一定要保持在原始字符串中的相对位置。样例样例 1:输入:ch原创 2021-07-15 15:58:06 · 847 阅读 · 0 评论 -
按奇偶排序数组
按奇偶排序数组题目:给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。解题思路:使用两个变量 i, j 遍历数组进行比较,当两数 % 2后分别是(1, 0)时说明与要求相反,此时应该将两数交换然后 i++, j—; (1, 1)时则 j 是符合要求的此时只需要 j–;原创 2021-07-15 14:25:11 · 128 阅读 · 0 评论 -
无序数组K小元素
无序数组K小元素题目:描述找到一个无序数组中第K小的数样例样例 1:输入: [3, 4, 1, 2, 5], k = 3输出: 3样例 2:输入: [1, 1, 1], k = 2输出: 1解题思路:和数组中的第K个最大元素类似public class Solution { /** * @param k: An integer * @param nums: An integer array * @return: kth smallest e原创 2021-07-15 11:21:27 · 215 阅读 · 0 评论 -
四数之和
四数之和题目:描述给一个包含n个数的整数数组S,在S中找到所有使得和为给定整数target的四元组(a, b, c, d)。四元组(a, b, c, d)中,需要满足a \leq b \leq c \leq da≤b≤c≤d,答案中不可以包含重复的四元组。样例样例 1:输入:numbers = [2,7,11,15]target = 3输出:[]解释:2 + 7 + 11 + 15 != 3,不存在满足条件的四元组。样例 2:输入:numbers = [1,0,-1,0原创 2021-07-14 17:59:54 · 72 阅读 · 0 评论 -
两数和 - 差等于目标值
两数和 - 差等于目标值题目:描述给定一个排序后的整数数组,找到两个数的 差 等于目标值。你需要返回一个包含两个数字的列表[num1, num2], 使得num1与num2的差为target,同时num1必须小于num2。保证只有一个答案。注意:要求用O(1)空间复杂度完成。样例例1:输入: nums = [2, 7, 15, 24], target = 5 输出: [2, 7] 解释:(7 - 2 = 5)例2:输入: nums = [1, 1], target = 0原创 2021-07-13 22:47:17 · 195 阅读 · 0 评论 -
最接近的三数之和
最接近的三数之和题目:描述给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。只需要返回三元组之和,无需返回三元组本身样例样例 1:输入:numbers = [2,7,11,15]target = 3输出:20解释:2+7+11=20样例 2:输入:numbers = [-1,2,1,-4]target = 1输出:2public class Solution { /** * @para原创 2021-07-13 16:43:39 · 65 阅读 · 0 评论 -
两数和的最接近值
两数和的最接近值题目:描述给定整数数组num,从中找到两个数字使得他们和最接近target,返回两数和与 target 的差的 绝对值。样例样例1输入: nums = [-1, 2, 1, -4] 并且 target = 4输出: 1解释:最小的差距是1,(4 - (2 + 1) = 1).样例2输入: nums = [-1, -1, -1, -4] 并且 target = 4输出: 6解释:最小的差距是6,(4 - (- 1 - 1) = 6).public class原创 2021-07-13 14:59:26 · 666 阅读 · 0 评论 -
两数之和 II
两数之和 II题目:描述给一组整数,问能找出多少对整数,他们的和大于一个给定的目标值。请返回答案。样例样例 1:输入: [2, 7, 11, 15], target = 24输出: 1解释: 11 + 15 是唯一的一对样例 2:输入: [1, 1, 1, 1], target = 1输出: 6public class Solution { /** * @param nums: an array of integer * @param target:原创 2021-07-13 14:46:31 · 109 阅读 · 0 评论 -
两数和-小于或等于目标值
两数和-小于或等于目标值题目:描述给定一个整数数组,找出这个数组中有多少对的和是小于或等于目标值。返回对数。样例例1:输入: nums = [2, 7, 11, 15], target = 24. 输出: 5. 解释:2 + 7 < 242 + 11 < 242 + 15 < 247 + 11 < 247 + 15 < 24例2:输入: nums = [1], target = 1. 输出: 0. public class Solutio原创 2021-07-13 14:41:01 · 513 阅读 · 0 评论 -
三角形计数
三角形计数题目:描述给定一个整数数组,在该数组中,寻找三个数,分别代表三角形三条边的长度,问,可以寻找到多少组这样的三个数来组成三角形?样例样例 1:输入: [3, 4, 6, 7]输出: 3解释:可以组成的是 (3, 4, 6), (3, 6, 7), (4, 6, 7)样例 2:输入: [4, 4, 4, 4]输出: 4解释:任何三个数都可以构成三角形所以答案为 C(3, 4) = 4解题思路:先将数组排序,然后遍历数组原创 2021-07-11 00:35:49 · 567 阅读 · 0 评论 -
两数之和 - 不同组成
两数之和 - 不同组成题目:描述给一整数数组, 找到数组中有多少组 不同的元素对 有相同的和, 且和为给出的 target 值, 返回对数.样例例1:输入: nums = [1,1,2,45,46,46], target = 47 输出: 2解释:1 + 46 = 472 + 45 = 47例2:输入: nums = [1,1], target = 2 输出: 1解释:1 + 1 = 2解题思路:和三数之和类似public class Solution { /原创 2021-07-10 23:44:38 · 82 阅读 · 0 评论 -
两数和 II-输入已排序的数组
两数和 II-输入已排序的数组题目:描述给定一个已经 按升序排列 的数组,找到两个数使他们加起来的和等于特定数。函数应该返回这两个数的下标,index1必须小于index2。注意返回的值不是 0-based。你可以假设每个输入刚好只有一个答案样例例1:输入: nums = [2, 7, 11, 15], target = 9 输出: [1, 2]例2:输入: nums = [2,3], target = 5输出: [1, 2]public class Solution {原创 2021-07-10 23:00:50 · 73 阅读 · 0 评论 -
两数之和 III-数据结构设计
两数之和 III-数据结构设计题目:描述设计并实现一个 TwoSum 类。他需要支持以下操作:add 和 find。add -把这个数添加到内部的数据结构。find -是否存在任意一对数字之和等于这个值样例样例 1:add(1);add(3);add(5);find(4)//返回truefind(7)//返回false解题思路:使用HashMap解决public class TwoSum { /** * @param number: An integer原创 2021-07-10 22:49:26 · 181 阅读 · 0 评论 -
两数之和
两数之和题目:描述给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1。你可以假设只有一组答案。样例样例 1:输入:numbers = [2,7,11,15]target = 9输出:[0,1]解释:numbers[0] + numbers[1] = 9样例 2:输入:numbers = [15,2,7,11]target =原创 2021-07-10 22:32:22 · 201 阅读 · 0 评论 -
恢复旋转排序数组
恢复旋转排序数组题目:描述给定一个旋转排序数组,在原地恢复其排序。(升序)什么是旋转数组?比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3]样例样例 1:输入:数组 = [4,5,1,2,3]输出:[1,2,3,4,5]解释:恢复旋转排序数组。样例 2:输入:数组 = [6,8,9,1,2]输出:[1,2,6,8,9]解题思路:先找到最小的数字,将该数字左边的元素rev原创 2021-07-09 16:48:52 · 98 阅读 · 0 评论 -
旋转字符串
旋转字符串题目:描述给定一个字符串str和一个偏移量,根据偏移量原地旋转字符串(从左向右旋转)。对于不同的语言,str将以不用的形式给出,例如对于字符串 "abc" ,将以下面的形式给出Java: char[] str = {'a', 'b', 'c'};Python:str = ['a', 'b', 'c']C++:string str = "abc";offset >= 0str的长度 >= 0原地旋转意味着需要在函数中更改字符串s。你不需要返回任何东西。样例样例原创 2021-07-09 16:14:50 · 168 阅读 · 0 评论 -
有效回文串
有效回文串题目:描述给定一个字符串,判断其是否为一个回文串。只考虑字母和数字,忽略大小写。你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。在这个题目中,我们将空字符串判定为有效回文。样例样例 1:输入: "A man, a plan, a canal: Panama"输出: true解释: "amanaplanacanalpanama"样例 2:输入: "race a car"输出: false解释: "raceacar"public cl原创 2021-07-09 15:44:54 · 76 阅读 · 0 评论