数据结构&算法
记下自己见到思考过的每一个题目,都是力扣的题,按标题搜应该能搜到
扣脚丫的喵酱
这个作者很懒,什么都没留下…
展开
-
24.第三大数
24.第三大数一、题目给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii二、示例示例①输入:[3, 2, 1]输出:1解释:第三大的数是 1 。示例②输入:[1,原创 2021-12-22 14:24:56 · 956 阅读 · 0 评论 -
23.找到所有数组中消失的数字
23.找到所有数组中消失的数字一、题目给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n]范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array二、示例示例①输入:nums = [4,3,2,7,8,2,3,1]输出:[5,6]示原创 2021-12-22 14:24:22 · 84 阅读 · 0 评论 -
22.数组的交集2
22.数组的交集2一、题目给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii二、示例示例①输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2原创 2021-12-22 14:23:46 · 242 阅读 · 0 评论 -
21.数组的交集
21.数组的集合一、题目给定两个数组,编写一个函数来计算它们的交集.来源:力扣(LeetCode)链接: https://leetcode-cn.com/problems/intersection-of-two-arrays/注意输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。二、示例示例①输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例②输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输原创 2021-12-22 14:23:14 · 140 阅读 · 0 评论 -
20. 区域和检索 - 数组不可变
20.区域和检索-数组不可变一、题目给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))来源:力扣(LeetC原创 2021-12-22 14:22:23 · 104 阅读 · 0 评论 -
19.移动零
19.移动零一、题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。链接:https://leetcode-cn.com/problems/move-zeroes/solution/yi-dong-ling-by-leetcode-solution/来源:力扣(LeetCode)说明必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。二、示例输入: [0,1,0,3,12]输出: [1,3,12,0,0]三、代码实现双指针原创 2021-12-21 10:37:56 · 99 阅读 · 0 评论 -
18.丢失的数字
18丢失的数字一、题目给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。链接:https://leetcode-cn.com/problems/missing-number/solution/diu-shi-de-shu-zi-by-leetcode-solution-naow/来源:力扣(LeetCode)二、示例示例①输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围原创 2021-12-21 10:36:51 · 417 阅读 · 0 评论 -
17.汇总区间
17.汇总区间一、题目给定一个无重复元素的有序整数数组 nums 。返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。列表中的每个区间范围 [a,b] 应该按如下格式输出:"a->b" ,如果 a != b"a" ,如果 a == b来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/summary-ranges原创 2021-12-21 10:36:02 · 82 阅读 · 0 评论 -
16.存在重复元素2
16.存在重复元素2一、题目给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/contains-duplicate-ii二、示例示例①输入: nums = [1,2,3,1], k = 3输出: true示例②输入: nums = [1,0,1,1], k = 1原创 2021-12-21 10:35:31 · 59 阅读 · 0 评论 -
14.多数元素
14.多数元素一、题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majority-element二、示例示例①输入:[3,2,3]输出:3示例②输入:[2,2,1,1,1,2,2]输出:2三、代码实现方法一:哈希表 private static Map原创 2021-12-21 10:34:59 · 126 阅读 · 0 评论 -
15.存在重复元素
15.存在重复元素一、题目给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。链接:https://leetcode-cn.com/problems/contains-duplicate/solution/cun-zai-zhong-fu-yuan-su-by-leetcode-sol-iedd/来源:力扣(LeetCode)二、示例示例①输入: [1,2,3,1]输出: true示例②输原创 2021-12-21 10:34:20 · 489 阅读 · 0 评论 -
13.两数之和2
13.两数之和2一、题目给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。来源:力扣(LeetCode)链接:h原创 2021-12-21 10:33:48 · 139 阅读 · 0 评论 -
12.只出现一次的数字
12.只出现一次的数字一、题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。链接:https://leetcode-cn.com/problems/single-number/solution/zhi-chu-xian-yi-ci-de-shu-zi-by-leetcode-solution/ 来源:力扣(LeetCode)二、示例示例①输入: [2,2,1]输出: 1示例②输入: [4,1,2,1,2]输出:原创 2021-12-21 10:33:17 · 47 阅读 · 0 评论 -
11.杨辉三角2
11.杨辉三角2一、题目给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。链接:https://leetcode-cn.com/problems/pascals-triangle-ii/solution/yang-hui-san-jiao-ii-by-leetcode-solutio-shuk/来源:力扣(LeetCode)二、示例示例①输入: rowIndex = 3输出: [1,3,3,1]示例②原创 2021-12-21 10:32:48 · 93 阅读 · 0 评论 -
10.杨辉三角
10.杨辉三角一、题目给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。链接:https://leetcode-cn.com/problems/pascals-triangle/solution/yang-hui-san-jiao-by-leetcode-solution-lew9/来源:力扣(LeetCode)二、示例示例①输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,原创 2021-12-21 10:32:17 · 74 阅读 · 0 评论 -
9.将有序数组转换为二叉搜索树
9.将有序数组转换为二叉搜索树一、题目给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree1 <= nums.length <= 104-104 <= nu原创 2021-12-20 20:27:36 · 90 阅读 · 0 评论 -
8.合并两个有序数组
8.合并两个有序数组一、题目给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。来源:力扣(Leet原创 2021-12-20 20:27:08 · 204 阅读 · 0 评论 -
7.买卖股票的时机
7.买卖股票的时机PS: 搜题的自己加上"最佳"两字一、题目给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-an原创 2021-12-20 20:24:10 · 97 阅读 · 0 评论 -
6.加一(凑标题字数)
6.加一一、题目给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/plus-one二、示例①示例1输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。②示例2输入:digits = [0]输出:原创 2021-12-20 20:17:43 · 67 阅读 · 0 评论 -
5.最大子序和-最大子数组和
5.最大子序和-最大子数组和一、题目给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。二、示例输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 三、代码实现动态规划?public static int maxSubArray(int[] nums){ int pre = 0, maxAns = nums原创 2021-12-20 20:15:28 · 463 阅读 · 0 评论 -
4.搜索插入位置
4.搜索插入位置一、题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。二、示例输入: nums = [1,3,5,6], target = 5输出: 2三、代码实现未修改版 public static int searchInsert(int[] nums,int target){ int n = nums.length; int原创 2021-12-20 20:14:27 · 144 阅读 · 0 评论 -
3.移除元素
3.移除元素一、题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。二、示例输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,原创 2021-12-20 20:13:47 · 53 阅读 · 0 评论 -
2.删除排序数组中的重复项
2.删除排序数组中的重复项一、题目给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。注:nums已按升序排序二、示例输入:nums = [1,1,2]输出:2, nums = [1,2]解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。三、代码实现双指针原创 2021-12-20 20:13:17 · 71 阅读 · 0 评论 -
1.两数之和
一、题目PS: 数组(简单)给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。二、示例输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。三、代码实现①: 暴力枚举 publ原创 2021-12-20 20:09:04 · 73 阅读 · 0 评论