数据类型,从基础到高级

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

一些问题涉及更复杂的结构,例如链表和二叉树,而其他问题则将矩阵/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
瀏覽:360

今年 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]刪除
最新教學 更多>
  • Java中假喚醒真的會發生嗎?
    Java中假喚醒真的會發生嗎?
    在Java中的浪費喚醒:真實性或神話? 在Java同步中偽裝喚醒的概念已經是討論的主題。儘管存在這種行為的潛力,但問題仍然存在:它們實際上是在實踐中發生的嗎? Linux的喚醒機制根據Wikipedia關於偽造喚醒的文章,linux實現了pthread_cond_wait()功能的Linux實現,...
    程式設計 發佈於2025-07-21
  • Java字符串非空且非null的有效檢查方法
    Java字符串非空且非null的有效檢查方法
    檢查字符串是否不是null而不是空的 if(str!= null && str.isementy())二手: if(str!= null && str.length()== 0) option 3:trim()。 isement(Isement() trim whitespace whites...
    程式設計 發佈於2025-07-21
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-07-21
  • 如何在Java的全屏獨家模式下處理用戶輸入?
    如何在Java的全屏獨家模式下處理用戶輸入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    程式設計 發佈於2025-07-21
  • 如何在其容器中為DIV創建平滑的左右CSS動畫?
    如何在其容器中為DIV創建平滑的左右CSS動畫?
    通用CSS動畫,用於左右運動 ,我們將探索創建一個通用的CSS動畫,以向左和右移動DIV,從而到達其容器的邊緣。該動畫可以應用於具有絕對定位的任何div,無論其未知長度如何。 問題:使用左直接導致瞬時消失 更加流暢的解決方案:混合轉換和左 [並實現平穩的,線性的運動,我們介紹了線性的轉換。...
    程式設計 發佈於2025-07-21
  • 如何使用node-mysql在單個查詢中執行多個SQL語句?
    如何使用node-mysql在單個查詢中執行多個SQL語句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    程式設計 發佈於2025-07-21
  • PHP SimpleXML解析帶命名空間冒號的XML方法
    PHP SimpleXML解析帶命名空間冒號的XML方法
    在php 很少,請使用該限制很大,很少有很高。例如:這種技術可確保可以通過遍歷XML樹和使用兒童()方法()方法的XML樹和切換名稱空間來訪問名稱空間內的元素。
    程式設計 發佈於2025-07-21
  • Java中如何使用觀察者模式實現自定義事件?
    Java中如何使用觀察者模式實現自定義事件?
    在Java 中創建自定義事件的自定義事件在許多編程場景中都是無關緊要的,使組件能夠基於特定的觸發器相互通信。本文旨在解決以下內容:問題語句我們如何在Java中實現自定義事件以促進基於特定事件的對象之間的交互,定義了管理訂閱者的類界面。 以下代碼片段演示瞭如何使用觀察者模式創建自定義事件: args...
    程式設計 發佈於2025-07-21
  • 如何處理PHP文件系統功能中的UTF-8文件名?
    如何處理PHP文件系統功能中的UTF-8文件名?
    在PHP的Filesystem functions中處理UTF-8 FileNames 在使用PHP的MKDIR函數中含有UTF-8字符的文件很多flusf-8字符時,您可能會在Windows Explorer中遇到comploreer grounder grounder grounder gro...
    程式設計 發佈於2025-07-21
  • C++中如何將獨占指針作為函數或構造函數參數傳遞?
    C++中如何將獨占指針作為函數或構造函數參數傳遞?
    在構造函數和函數中將唯一的指數管理為參數 unique pointers( unique_ptr [2啟示。通過值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法將唯一指針的所有權轉移到函數/對象。指針的內容被移至功能中,在操作...
    程式設計 發佈於2025-07-21
  • 如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    如何修復\“常規錯誤:2006 MySQL Server在插入數據時已經消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    程式設計 發佈於2025-07-21
  • Go語言如何動態發現導出包類型?
    Go語言如何動態發現導出包類型?
    與反射軟件包中的有限類型的發現能力相反,本文探討了在運行時發現所有包裝類型(尤其是struntime go import( “ FMT” “去/進口商” ) func main(){ pkg,err:= incorter.default()。導入(“ time”) ...
    程式設計 發佈於2025-07-21
  • 為什麼使用Firefox後退按鈕時JavaScript執行停止?
    為什麼使用Firefox後退按鈕時JavaScript執行停止?
    導航歷史記錄問題:JavaScript使用Firefox Back Back 此行為是由瀏覽器緩存JavaScript資源引起的。要解決此問題並確保在後續頁面訪問中執行腳本,Firefox用戶應設置一個空功能。 警報'); }; alert('inline Alert')...
    程式設計 發佈於2025-07-21
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-07-21
  • CSS可以根據任何屬性值來定位HTML元素嗎?
    CSS可以根據任何屬性值來定位HTML元素嗎?
    靶向html元素,在CSS 中使用任何屬性值,在CSS中,可以基於特定屬性(如下所示)基於特定屬性的基於特定屬性的emants目標元素: 字體家庭:康斯拉斯(Consolas); } 但是,出現一個常見的問題:元素可以根據任何屬性值而定位嗎?本文探討了此主題。 的目標元素有任何任何屬性值,...
    程式設計 發佈於2025-07-21

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3