【leetcode】力扣刷题之时间复杂度常见算法速查表+推断技巧
常见算法的时间复杂度
一、常见算法时间复杂度速查表
算法类别
具体算法
最佳情况
平均情况
最坏情况
空间复杂度 (通常)
关键特点/说明
排序算法
...
2020-06-08 07:13:08 |
Algorithm
【leetcode】力扣刷题之空间复杂度介绍 Space Complexity
算法中的空间复杂度
好的,空间复杂度(Space Complexity)是算法分析中与时间复杂度同等重要的概念,它衡量的是算法在执行过程中所需额外存储空间(除输入数据本身占据的空间外)随输入数据规模(通常用 n 表示)增长的幅度。理解空间复杂度对于评估算法的内存消耗、优化资源利用以及设计高效系统至关重要。
1. 核心概念:什么是空间复杂度?
定义: 空间复杂度衡量算法在运行期...
2020-06-08 07:13:08 |
Algorithm
【leetcode】81-recursive 递归 汉诺塔(Tower of Hanoi)
chat
题目
汉诺塔(Tower of Hanoi)是一个经典的递归问题。问题描述是,有三个柱子和若干个盘子,初始状态下所有盘子按大小从小到大叠在第一个柱子上。目标是将所有盘子从第一个柱子移动到第三个柱子,但每次只能移动一个盘子,且大盘子不能放在小盘子上面。
解题思路
分解问题:假设有 ( n ) 个盘子在柱子 A 上,要将它们移动到柱子 C 上,可以分解为两个步骤:
...
2020-06-08 07:13:08 |
Algorithm
【leetcode】80-recursive 递归
chat
是什么?
递归算法是一种在计算机科学中非常常见的解决问题的方法,它通过函数调用自身来解决问题。
递归通常将复杂的问题分解成更小的子问题,通过逐步缩小问题规模直到满足某种条件(基准情况或边界条件)停止递归调用,从而得到解答。
递归的基本组成部分
一个典型的递归算法包含两个关键部分:
基准条件(Base Case):基准条件是递归算法停止递归的条件。它通常用于...
2020-06-08 07:13:08 |
Algorithm
【leetcode】73-3195. 包含所有 1 的最小矩形面积 I
题目
给你一个二维 二进制 数组 grid。请你找出一个边在水平方向和竖直方向上、面积 最小 的矩形,并且满足 grid 中所有的 1 都在矩形的内部。
返回这个矩形可能的 最小 面积。
示例 1:
输入: grid = [[0,1,0],[1,0,1]]
输出: 6
解释:
0 1 0
1 0 1
这个最小矩形的高度为 2,宽度为 3,因此面积为 2 * 3...
2020-06-08 07:13:08 |
Algorithm
【leetcode】73-greedy 2459. 通过移动项目到空白区域来排序数组
题目
给定一个大小为 n 的整数数组 nums,其中包含从 0 到 n - 1 (包含边界) 的 每个 元素。
从 1 到 n - 1 的每一个元素都代表一项目,元素 0 代表一个空白区域。
在一个操作中,您可以将 任何 项目移动到空白区域。如果所有项目的编号都是 升序 的,并且空格在数组的开头或结尾,则认为 nums 已排序。
例如,如果 n = 4,则 nums 按以下条件排序:...
2020-06-08 07:13:08 |
Algorithm
【leetcode】72-greedy 2548. 填满背包的最大价格 分数背包
题目
给定一个二维整数数组 items ,其中 items[i] = [pricei, weighti] 表示第 i 个物品的价格和重量。
还给定一个 正 整数容量 capacity 。
每个物品可以分成两个部分,比率为 part1 和 part2 ,其中 part1 + part2 == 1 。
第一个物品的重量是 weighti * part1 ,价格是 pricei * par...
2020-06-08 07:13:08 |
Algorithm
【leetcode】70-greedy 贪心算法
chat
详细介绍一下 贪心算法
贪心算法(Greedy Algorithm)是一种在每一步选择当前状态下局部最优解的算法策略,希望通过一系列局部最优选择得到全局最优解。
贪心算法通常比其他方法(如动态规划)简单、高效,但它并不总是适用,也无法保证在所有情况下找到最优解。
因此,使用贪心算法时需要先确认问题是否满足贪心选择的条件。
贪心算法的特点
贪心选择性质:
...
2020-06-08 07:13:08 |
Algorithm