
数据结构与算法
文章平均质量分 82
小小幸运儿
这个作者很懒,什么都没留下…
展开
-
数据结构(一)数组
概述 说起数组我们都不陌生,几乎在每一种编程语言中,基本上都会有数组这种数据类型。不仅如此它还是是最基础最简单的数据结构。尽管如此,可能还是有一些人并没有真正的理解这个基础数据结构的精髓所在。 首先,我们都知道,在java中数组是从 0 开始编号的,但是为什么数组要从 0 开始编号,而不是从 1 开始呢?从 1 开始不是更加的符合人类的思维方式吗? 定义 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 首先,定义中有几个关键词,需要我们关注一下。理解原创 2021-09-09 21:57:50 · 503 阅读 · 1 评论 -
算法基础:复杂度分析(下)浅析最好、最坏、平均、均摊时间复杂度
算法基础:复杂度分析(上)如何分析、统计算法的执行效率和资源消耗 在时间复杂度分析中,还有四个概念也是需要了解的。它们分别是:最好情况时间复杂度(best case time complexity)、最坏情况时间复杂度(worst cast time complexity)、平均情况时间复杂度(average cast time complexity)和 均摊时间复杂度(amortized time complexity)。 最好、最坏情况时间复杂度 下面看一段代码,我们分别从最好和最坏的情况下去分析原创 2021-09-04 20:12:29 · 1065 阅读 · 0 评论 -
算法基础:复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
前言 我们都知道,数据结构和算法本身解决的是 “快” 和 “省” 的问题,即如何让代码运行得更快,如何让代码更生存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量我们编写的算法代码的执行效率呢?那就是时间、空间复杂度分析。 为什么需要复杂度分析? 我们知道在算法中有一种事后统计法,这种方法就是将代码执行一遍,通过统计、监控等方式就能得到算法执行时间和占用空间的内存大小。但是这种时候统计方法有非常大的局限性。 1. 测试结果非常依赖测试环境 同样的代码在Intel Core i9处理原创 2021-08-28 22:05:07 · 559 阅读 · 0 评论 -
LeetCode刷题之数组篇(二)三数之和
题目描述:给你一个包含 n 个整数的数组 nums ,判断 nums 中是否存在三个元素 a,b,c,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例1: 输入: nums = [-1, 0, 1, 2, -1, -4]; 输出:[[-1, -1, 2],[-1, 0, 1]] 这道题 “不重复”是一个切入点。正如官方给的题解中提到的,在最坏的情况下,数组中的元素全部为0,如果此时我们还继续使用三重循环来遍历所有的数组。会得到原创 2021-08-12 22:46:05 · 266 阅读 · 0 评论 -
LeetCode刷题之数组篇(一)两数之和
题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。 实例1: 输入:nums = [2, 7, 11, 15],target = 9 输出:[0, 1] 解释:因为 nums[0] + nums[1] == 9,返回 [0, 1]。 这个题目还是比较简单的,一般的我们都能想到使用两层 for .原创 2021-08-11 22:04:54 · 213 阅读 · 0 评论