数据类型,从基础到高级

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

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

今年 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]刪除
最新教學 更多>
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-05-24
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-05-24
  • 如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    postgresql:為每個唯一標識符在postgresql中提取最後一行,您可能需要遇到與數據集合中每個不同標識的信息相關的信息。考慮以下數據:[ 1 2014-02-01 kjkj 在數據集中的每個唯一ID中檢索最後一行的信息,您可以在操作員上使用Postgres的有效效率: id dat...
    程式設計 發佈於2025-05-24
  • 使用jQuery如何有效修改":after"偽元素的CSS屬性?
    使用jQuery如何有效修改":after"偽元素的CSS屬性?
    在jquery中了解偽元素的限制:訪問“ selector 嘗試修改“:”選擇器的CSS屬性時,您可能會遇到困難。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    程式設計 發佈於2025-05-24
  • 如何同步迭代並從PHP中的兩個等級陣列打印值?
    如何同步迭代並從PHP中的兩個等級陣列打印值?
    同步的迭代和打印值來自相同大小的兩個數組使用兩個數組相等大小的selectbox時,一個包含country代碼的數組,另一個包含鄉村代碼,另一個包含其相應名稱的數組,可能會因不當提供了exply for for for the uncore for the forsion for for ytry...
    程式設計 發佈於2025-05-24
  • 反射動態實現Go接口用於RPC方法探索
    反射動態實現Go接口用於RPC方法探索
    在GO 使用反射來實現定義RPC式方法的界面。例如,考慮一個接口,例如:鍵入myService接口{ 登錄(用戶名,密碼字符串)(sessionId int,錯誤錯誤) helloworld(sessionid int)(hi String,錯誤錯誤) } 替代方案而不是依靠反射...
    程式設計 發佈於2025-05-24
  • PHP SimpleXML解析帶命名空間冒號的XML方法
    PHP SimpleXML解析帶命名空間冒號的XML方法
    在php 很少,請使用該限制很大,很少有很高。例如:這種技術可確保可以通過遍歷XML樹和使用兒童()方法()方法的XML樹和切換名稱空間來訪問名稱空間內的元素。
    程式設計 發佈於2025-05-24
  • 解決Spring Security 4.1及以上版本CORS問題指南
    解決Spring Security 4.1及以上版本CORS問題指南
    彈簧安全性cors filter:故障排除常見問題 在將Spring Security集成到現有項目中時,您可能會遇到與CORS相關的錯誤,如果像“訪問Control-allo-allow-Origin”之類的標頭,則無法設置在響應中。為了解決此問題,您可以實現自定義過濾器,例如代碼段中的MyFi...
    程式設計 發佈於2025-05-24
  • 如何有效地轉換PHP中的時區?
    如何有效地轉換PHP中的時區?
    在PHP 利用dateTime對象和functions DateTime對象及其相應的功能別名為時區轉換提供方便的方法。例如: //定義用戶的時區 date_default_timezone_set('歐洲/倫敦'); //創建DateTime對象 $ dateTime = ne...
    程式設計 發佈於2025-05-24
  • Python讀取CSV文件UnicodeDecodeError終極解決方法
    Python讀取CSV文件UnicodeDecodeError終極解決方法
    在試圖使用已內置的CSV模塊讀取Python中時,CSV文件中的Unicode Decode Decode Decode Decode decode Error讀取,您可能會遇到錯誤的錯誤:無法解碼字節 在位置2-3中:截斷\ uxxxxxxxx逃脫當CSV文件包含特殊字符或Unicode的路徑逃...
    程式設計 發佈於2025-05-24
  • 為什麼儘管有效代碼,為什麼在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-24
  • FastAPI自定義404頁面創建指南
    FastAPI自定義404頁面創建指南
    response = await call_next(request) if response.status_code == 404: return RedirectResponse("https://fastapi.tiangolo.com") else: ...
    程式設計 發佈於2025-05-24
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-05-24
  • 為什麼我在Silverlight Linq查詢中獲得“無法找到查詢模式的實現”錯誤?
    為什麼我在Silverlight Linq查詢中獲得“無法找到查詢模式的實現”錯誤?
    查詢模式實現缺失:解決“無法找到”錯誤在銀光應用程序中,嘗試使用LINQ建立錯誤的數據庫連接的嘗試,無法找到以查詢模式的實現。 ”當省略LINQ名稱空間或查詢類型缺少IEnumerable 實現時,通常會發生此錯誤。 解決問題來驗證該類型的質量是至關重要的。在此特定實例中,tblpersoon可能...
    程式設計 發佈於2025-05-24
  • MySQL中如何高效地根據兩個條件INSERT或UPDATE行?
    MySQL中如何高效地根據兩個條件INSERT或UPDATE行?
    在兩個條件下插入或更新或更新 solution:的答案在於mysql的插入中...在重複鍵更新語法上。如果不存在匹配行或更新現有行,則此功能強大的功能可以通過插入新行來進行有效的數據操作。如果違反了唯一的密鑰約束。 實現所需的行為,該表必須具有唯一的鍵定義(在這種情況下為'名稱'...
    程式設計 發佈於2025-05-24

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

Copyright© 2022 湘ICP备2022001581号-3