数据类型,从基础到高级

每天我都会接触不同类型的数据结构和算法。我学会了处理

一些问题涉及更复杂的结构,例如链表和二叉树,而其他问题则将矩阵/n维数组混合在一起,让我可以处理多维空间。

问题的多样性让我保持警惕。 LeetCode 的 30 天 JavaScript 轨道上的问题向我介绍了诸如

之类的基础知识

LeetCode 的 Top Interview 150 轨道更进一步,让我在不同难度和方法的问题之间徘徊。每天至少解决其中一个问题是非常宝贵的。这些问题也促使我更频繁地思考优化以及不同的方法如何极大地影响运行时和内存效率。

除了这些挑战之外,我还学习了结构课程,以巩固我对关键概念的理解。我学习了更有效的方法来处理某些数据结构,例如链表和二叉树的部分。我特别欣赏该平台的动态教学方法,并以易于理解的方式分解问题。这是一个很好的平台,可以从非常基础的层面学习 DSA,然后将这种理解转化为我面临的其他编码问题。

方法和技术

随着时间的推移,我遇到了很多种解决方法、解决问题的技巧,例如

我发现两指针方法是解决涉及序列(主要是数组和字符串)的问题的一种简单而强大的方法,通过减少搜索空间以获得更有效的解决方案。我还使用了贪婪算法,我需要在每一步中做出局部最优选择。

滑动窗口技术是另一个令人大开眼界的技术——最初具有挑战性,但对于涉及子数组或子串的问题很有价值;需要跟踪序列中元素的移动范围的问题。哈希图和哈希表非常适合涉及频繁查找的问题中的键值对。

我使用过的最复杂的技术之一是动态编程。早期,我发现 DP 相当令人生畏,因为它很难识别重叠的子问题,但随着反复接触,记忆化成为我优化递归调用时最好的朋友。

函数操作(功能。包装器和原型)

除了核心 DSA 问题之外,我还有机会尝试更高级的 JavaScript 概念。我编写了包装函数,学习如何控制代码流程并根据特定要求扩展功能。我什至学会了在函数上设置计时器,这允许我处理时间敏感的操作或限制某些函数的执行频率。

使用原型向我展示了通过创建自定义方法可以对数据类型进行超出其内置功能的操作。这使我能够以新的方式扩展对象和数组等数据类型的内置功能。我开始意识到编写干净、模块化代码的重要性。

我还学习了记忆化,这是一种修改函数的技术,以便它存储先前调用的参数及其结果!这是一种缓存,有助于提高多次调用同一函数的问题的性能。我在这里写了关于我的 Memoize 解决方案击败 99%(内存)的文章:Memoize 直观解决方案击败 99% 内存。

测试与优化

在此过程中我开始更加关注的另一件事是代码的优化。在正确介绍了 Structy 上的大 O 表示法之后,我理解了时间和空间复杂性的重要性,并且学会了解决最常见问题的最佳技术。在 HackerRank 挑战赛接近尾声时,我还学会了使用类测试代码并编写泛型。

外卖

当我完成 30 天编程挑战时,我感受到了深刻的成长感。它提高了我处理各种问题的能力,加深了我对 JavaScript 和 DSA 的理解。这一个月的旅程不仅仅是解决问题,还提醒自己,我真的可以付出努力。看到一致性和纪律的回报,我的心态得到了更新,可以充满信心和强大的技术工具包来应对任何挑战。

这次经历标志着我编程之旅的一个重要里程碑。我在这 30 天里磨练的技能无疑将延续到我作为软件工程师的职业生涯中。

我为自己付出的努力感到自豪,并感谢在整个挑战过程中为我加油并提供支持和智慧的朋友。

\\\"#aysofCode

","image":"http://www.luping.net/uploads/20241006/172818757367020cb51a890.jpg","datePublished":"2024-11-07T22:11:52+08:00","dateModified":"2024-11-07T22:11:52+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > #aysofCode 九月:我的 DSA 掌握之旅

#aysofCode 九月:我的 DSA 掌握之旅

发布于2024-11-07
浏览:496

今年 9 月,我开始了一项自我施加的 30 天编程挑战,承诺每天至少解决两个数据结构和算法 (DSA) 问题。我的目标是让自己走出舒适区,建立一致性,并提高我解决问题的能力和编程逻辑。

我不只是坚持一个平台——我完成了 HackerRank 的 30 天编程挑战、LeetCode 的 30 天 JavaScript 计划,还解决了 LeetCode 的 Top Interview 150 track,这是一个针对准备面试的人的 150 个典型面试问题的集合。编码面试。此外,我还学习了一些关于 Structy 的课程,以进一步加强我对 DSA 概念的掌握。

我使用 JavaScript 解决了大多数问题(除了一些不支持 JavaScript 的 HackerRank 问题,所以我使用了 Python)。为了帮助自己承担责任并分享我的进步,我在 Twitter 上发布了我每天解决的挑战。您可以在此引用路径中找到它们:

数据类型,从基础到高级

每天我都会接触不同类型的数据结构和算法。我学会了处理

  • 数组
  • 字符串
  • 对象
  • 地图
  • 数字
  • 布尔值等等。

一些问题涉及更复杂的结构,例如链表和二叉树,而其他问题则将矩阵/n维数组混合在一起,让我可以处理多维空间。

问题的多样性让我保持警惕。 LeetCode 的 30 天 JavaScript 轨道上的问题向我介绍了诸如

之类的基础知识
  • 数组转换
  • 函数转换
  • 关闭
  • 课程
  • JSON
  • 承诺和时间。

LeetCode 的 Top Interview 150 轨道更进一步,让我在不同难度和方法的问题之间徘徊。每天至少解决其中一个问题是非常宝贵的。这些问题也促使我更频繁地思考优化以及不同的方法如何极大地影响运行时和内存效率。

除了这些挑战之外,我还学习了结构课程,以巩固我对关键概念的理解。我学习了更有效的方法来处理某些数据结构,例如链表和二叉树的部分。我特别欣赏该平台的动态教学方法,并以易于理解的方式分解问题。这是一个很好的平台,可以从非常基础的层面学习 DSA,然后将这种理解转化为我面临的其他编码问题。

方法和技术

随着时间的推移,我遇到了很多种解决方法、解决问题的技巧,例如

  • 递归
  • 两指针
  • 哈希映射
  • 哈希表
  • 贪心算法
  • 二分查找
  • 滑动窗口
  • 动态规划
  • 缓存(记忆)等等。

我发现两指针方法是解决涉及序列(主要是数组和字符串)的问题的一种简单而强大的方法,通过减少搜索空间以获得更有效的解决方案。我还使用了贪婪算法,我需要在每一步中做出局部最优选择。

滑动窗口技术是另一个令人大开眼界的技术——最初具有挑战性,但对于涉及子数组或子串的问题很有价值;需要跟踪序列中元素的移动范围的问题。哈希图和哈希表非常适合涉及频繁查找的问题中的键值对。

我使用过的最复杂的技术之一是动态编程。早期,我发现 DP 相当令人生畏,因为它很难识别重叠的子问题,但随着反复接触,记忆化成为我优化递归调用时最好的朋友。

函数操作(功能。包装器和原型)

除了核心 DSA 问题之外,我还有机会尝试更高级的 JavaScript 概念。我编写了包装函数,学习如何控制代码流程并根据特定要求扩展功能。我什至学会了在函数上设置计时器,这允许我处理时间敏感的操作或限制某些函数的执行频率。

使用原型向我展示了通过创建自定义方法可以对数据类型进行超出其内置功能的操作。这使我能够以新的方式扩展对象和数组等数据类型的内置功能。我开始意识到编写干净、模块化代码的重要性。

我还学习了记忆化,这是一种修改函数的技术,以便它存储先前调用的参数及其结果!这是一种缓存,有助于提高多次调用同一函数的问题的性能。我在这里写了关于我的 Memoize 解决方案击败 99%(内存)的文章:Memoize 直观解决方案击败 99% 内存。

测试与优化

在此过程中我开始更加关注的另一件事是代码的优化。在正确介绍了 Structy 上的大 O 表示法之后,我理解了时间和空间复杂性的重要性,并且学会了解决最常见问题的最佳技术。在 HackerRank 挑战赛接近尾声时,我还学会了使用类测试代码并编写泛型。

外卖

当我完成 30 天编程挑战时,我感受到了深刻的成长感。它提高了我处理各种问题的能力,加深了我对 JavaScript 和 DSA 的理解。这一个月的旅程不仅仅是解决问题,还提醒自己,我真的可以付出努力。看到一致性和纪律的回报,我的心态得到了更新,可以充满信心和强大的技术工具包来应对任何挑战。

这次经历标志着我编程之旅的一个重要里程碑。我在这 30 天里磨练的技能无疑将延续到我作为软件工程师的职业生涯中。

我为自己付出的努力感到自豪,并感谢在整个挑战过程中为我加油并提供支持和智慧的朋友。

#aysofCode September: My journey to DSA Mastery

版本声明 本文转载于:https://dev.to/akcumeh/30daysofcode-september-my-journey-to-dsa-mastery-647?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何避免Go语言切片时的内存泄漏?
    如何避免Go语言切片时的内存泄漏?
    ,a [j:] ...虽然通常有效,但如果使用指针,可能会导致内存泄漏。这是因为原始的备份阵列保持完整,这意味着新切片外部指针引用的任何对象仍然可能占据内存。 copy(a [i:] 对于k,n:= len(a)-j i,len(a); k
    编程 发布于2025-05-25
  • 将图片浮动到底部右侧并环绕文字的技巧
    将图片浮动到底部右侧并环绕文字的技巧
    在Web设计中围绕在Web设计中,有时可以将图像浮动到页面右下角,从而使文本围绕它缠绕。这可以在有效地展示图像的同时创建一个吸引人的视觉效果。 css位置在右下角,使用css float and clear properties: img { 浮点:对; ...
    编程 发布于2025-05-25
  • 为什么我的CSS背景图像出现?
    为什么我的CSS背景图像出现?
    故障排除:CSS背景图像未出现 ,您的背景图像尽管遵循教程说明,但您的背景图像仍未加载。图像和样式表位于相同的目录中,但背景仍然是空白的白色帆布。而不是不弃用的,您已经使用了CSS样式: bockent {背景:封闭图像文件名:背景图:url(nickcage.jpg); 如果您的html,css...
    编程 发布于2025-05-25
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-05-25
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,将常数列添加到Spark DataFrame,该列具有适用于所有行的任意值的Spark DataFrame,可以通过多种方式实现。使用文字值(SPARK 1.3)在尝试提供直接值时,用于此问题时,旨在为此目的的column方法可能会导致错误。 df.withCo...
    编程 发布于2025-05-25
  • 如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    为有效的slug生成首先,该函数用指定的分隔符替换所有非字母或数字字符。此步骤可确保slug遵守URL惯例。随后,它采用ICONV函数将文本简化为us-ascii兼容格式,从而允许更广泛的字符集合兼容性。接下来,该函数使用正则表达式删除了不需要的字符,例如特殊字符和空格。此步骤可确保slug仅包含...
    编程 发布于2025-05-25
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的Python功能Eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。 This article delves into the differences betwee...
    编程 发布于2025-05-25
  • 如何从Google API中检索最新的jQuery库?
    如何从Google API中检索最新的jQuery库?
    从Google APIS 问题中提供的jQuery URL是版本1.2.6。对于检索最新版本,以前有一种使用特定版本编号的替代方法,它是使用以下语法:获取最新版本:未压缩)While these legacy URLs still remain in use, it is recommended ...
    编程 发布于2025-05-25
  • 如何使用Depimal.parse()中的指数表示法中的数字?
    如何使用Depimal.parse()中的指数表示法中的数字?
    在尝试使用Decimal.parse(“ 1.2345e-02”中的指数符号表示法表示的字符串时,您可能会遇到错误。这是因为默认解析方法无法识别指数符号。 成功解析这样的字符串,您需要明确指定它代表浮点数。您可以使用numbersTyles.Float样式进行此操作,如下所示:[&& && && ...
    编程 发布于2025-05-25
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-05-25
  • 如何在其容器中为DIV创建平滑的左右CSS动画?
    如何在其容器中为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-05-25
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-05-25
  • 如何解决AppEngine中“无法猜测文件类型,使用application/octet-stream...”错误?
    如何解决AppEngine中“无法猜测文件类型,使用application/octet-stream...”错误?
    appEngine静态文件mime type override ,静态文件处理程序有时可以覆盖正确的mime类型,在错误消息中导致错误消息:“无法猜测mimeType for for file for file for [File]。 application/application/octet...
    编程 发布于2025-05-25
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-05-25
  • 左连接为何在右表WHERE子句过滤时像内连接?
    左连接为何在右表WHERE子句过滤时像内连接?
    左JOIN CONUNDRUM:WITCHING小时在数据库Wizard的领域中变成内在的加入很有趣,当将c.foobar条件放置在上面的Where子句中时,据说左联接似乎会转换为内部连接。仅当满足A.Foo和C.Foobar标准时,才会返回结果。为什么要变形?关键在于其中的子句。当左联接的右侧值...
    编程 发布于2025-05-25

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3