leetcode
文章平均质量分 53
北冥有鱼nkl
这个作者很懒,什么都没留下…
展开
-
快速排序(java)
快速排序(java)1、升序版 /** * 快速排序算法 升序 * @param nums 待排序数组 * @param left 数组左边界下标值 * @param right 数组有边界下标值 */ public void quickSort(int[] nums, int left, int right) { if (left >= right) { return; }原创 2022-05-17 11:30:37 · 340 阅读 · 0 评论 -
343. 整数拆分(动态规划)
343. 整数拆分给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积 。示例 1:输入: n = 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: n = 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。提示:2 <= n <= 58题解class Solution { public int integerB原创 2022-04-11 21:04:15 · 618 阅读 · 0 评论 -
63. 不同路径 II(动态规划)
63. 不同路径 II一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。示例 1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。从左上角到右下角一原创 2022-04-06 20:50:29 · 880 阅读 · 0 评论 -
62. 不同路径(动态规划)
62. 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向下 -> 向下向下 -> 向下 -> 向右向下 ->原创 2022-04-04 21:08:00 · 64 阅读 · 0 评论 -
746. 使用最小花费爬楼梯(动态规划)
746. 使用最小花费爬楼梯(动态规划)使用最小花费爬楼梯给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。示例 1:输入:cost = [10,15,20]输出:15解释:你将从下标为 1 的台阶开始。支付 15 ,向上爬两个台阶,到达楼梯顶部。总花费为 15 。示例 2:输入:cost原创 2022-04-04 20:15:38 · 113 阅读 · 0 评论 -
70. 爬楼梯(动态规划)
70. 爬楼梯(动态规划)爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:输入:n = 2输出:2解释:有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入:n = 3输出:3解释:有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶提示:1 <= n <= 45题解class Solution { pu原创 2022-03-29 22:14:22 · 234 阅读 · 0 评论 -
509. 斐波那契数(动态规划)
509. 斐波那契数(动态规划)斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给定 n ,请计算 F(n) 。示例 1:输入:n = 2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:n = 3输出:2解释:F(3) = F(2) + F原创 2022-03-29 21:56:11 · 102 阅读 · 0 评论 -
206. 反转链表(双指针,递归法)
206. 反转链表反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?题解(双指针法):/原创 2022-03-24 14:43:12 · 76 阅读 · 0 评论 -
904. 水果成篮(数组、滑动窗口)
904. 水果成篮(数组、滑动窗口)考察点:数组、滑动窗口水果成篮你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果:你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果。每个篮子能够装的水果总量没有限制。你可以选择任意一棵树开始采摘,你必须从 每棵 树(包括开始采摘的树)上 恰好摘一个水果 。采摘的原创 2022-03-23 18:05:08 · 572 阅读 · 0 评论 -
209. 长度最小的子数组
209. 长度最小的子数组考察点数组、窗口滑动长度最小的子数组给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:ta原创 2022-03-23 17:12:33 · 93 阅读 · 0 评论 -
35. 搜索插入位置(力扣)
01题目描述考察点:数组、二分查找法35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4原创 2022-03-16 13:13:36 · 91 阅读 · 0 评论 -
查找与排序
查找与排序查找二分查找查找二分查找总结:如果能找到一定是在mid处找到,如果找不到最终跳出循环时会有left在左边,right在右边(left>right或left==right+1),且nums[right] < target <nums[left]例题:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,原创 2022-02-24 17:46:35 · 53 阅读 · 0 评论