【leetcode】力扣刷题技巧之对数器,如果没有OJ(在线判题系统)怎么办?如何保障本地代码的正确性
什么是对数器?
对数器,本质上是一种用于验证算法正确性的测试工具和调试方法。
它的核心思想是:
有一个你想测试的目标算法 A:这个算法通常是你新设计的、优化的、或者相对复杂、你对其正确性没有十足把握的算法(比如一个高效的排序算法、一个巧妙的动态规划解法)。
有一个绝对正确(但可能低效、简单、暴力)的算法 B:这个算法是作为“标杆”或“正确答案生成器”存在的。它的正确性很容易被...
2020-06-08 07:13:08 |
Algorithm
【leetcode】力扣刷题之时间复杂度介绍 Time Complexity
1. 核心概念:什么是时间复杂度?
定义: 时间复杂度衡量的是一个算法执行所需的时间如何随输入数据规模(通常用 n 表示)的增长而增长。它不是计算算法运行的具体秒数(这取决于硬件、编程语言、编译器优化等),而是描述运行时间随输入规模 n 变化的趋势。
目的:
比较算法优劣: 在解决同一问题时,不同算法可能有不同的时间效率。时间复杂度提供了一个理论框架来比较它...
2020-06-08 07:13:08 |
Algorithm
【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