代碼隨想錄算法訓練營第一天:數組part1

今日學習的文章鏈接和視頻鏈接
● 自己看到題目的第一想法
● 看完代碼隨想錄之后的想法
● 自己實現過程中遇到哪些困難
● 今日收獲,記錄一下自己的學習時長

狀態
思路理解完成 30%
代碼debug完成 60%
代碼模板總結并抽象出來 100%

題目

704 二分查找

題目鏈接:https://leetcode.cn/problems/binary-search/
文章講解:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html
視頻講解:https://www.bilibili.com/video/BV1fA4y1o715
狀態:進度 45%

思路:要仔細debug一下閉區間、左開右閉的寫法。

27. 移除元素

題目建議: 暴力的解法,可以鍛煉一下我們的代碼實現能力,建議先把暴力寫法寫一遍。 雙指針法 是本題的精髓,今日需要掌握,至于拓展題目可以先不看。

題目鏈接:https://leetcode.cn/problems/remove-element/
文章講解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html
視頻講解:https://www.bilibili.com/video/BV12A4y1Z7LP
狀態:60%

977.有序數組的平方

題目建議: 本題關鍵在于理解雙指針思想

題目鏈接:https://leetcode.cn/problems/squares-of-a-sorted-array/
文章講解:https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.html
視頻講解:
https://www.bilibili.com/video/BV1QB4y1D7ep
狀態:45%

學習記錄

數組

1、在內存中的存儲方式

  • 數組下標都是從0開始的。
  • 數組內存空間的地址是連續的

因為數組在內存空間的地址是連續的,所以我們在刪除或者增添元素的時候,就難免要移動其他元素的地址。
數組的元素是不能刪的,只能覆蓋。

根據 左閉右開,左閉右閉 兩種區間規則 寫出來的二分法

二分查找法的前提

  • 數組為有序數組
  • 同時題目還強調數組中無重復元素,因為一旦有重復元素,使用二分查找法返回的元素下標可能不是唯一的

時間投入

兩個小時過了一下兩天的題目。
找到了一點點感覺。思路都是對的,現在重點訓練落地正確準確率。(其實就是深度理解和背模板)

代碼模板

二分查找

閉區間

# 閉區間
def binary_search(nums: list[int], target: int) -> int:left, right = 0, len(nums) - 1  # 閉區間 [left, right]while left <= right:  # 終止條件:left > rightmid = left + (right - left) // 2  # 避免溢出if nums[mid] == target:return midelif nums[mid] < target:left = mid + 1  # 目標在右半部分else:right = mid - 1  # 目標在左半部分return -1  # 未找到

關鍵點:
? 循環條件:left <= right(閉區間)。
? 中間值計算:mid = left + (right - left) // 2(避免 (left + right) 溢出)。
? 返回值:找到時返回 mid,否則返回 -1

左閉右開

def binary_search(nums: list[int], target: int) -> int:left, right = 0, len(nums)  # 初始化右開區間 [left, right)while left < right:  # 終止條件:left == rightmid = left + (right - left) // 2if nums[mid] == target:return midelif nums[mid] < target:left = mid + 1  # 目標在右半部分 [mid+1, right)else:right = mid  # 目標在左半部分 [left, mid)return -1  # 未找到

關鍵區別

  1. 初始區間:right = len(nums)(開區間,不包含 len(nums))。
  2. 循環條件:left < right(終止時 left == right)。
  3. 右邊界更新:right = mid(因為 right 本身是開區間,不包含 mid)。
  4. 返回值:未找到時返回 -1
特性閉區間 [left, right]左閉右開 [left, right)左開右閉 (left, right]
初始化right = len(nums) - 1right = len(nums)left = -1
循環條件left <= rightleft < rightleft < right
中值計算mid = left + (right - left)//2同上mid = left + (right - left +1)//2
更新左邊界left = mid + 1left = mid + 1left = mid
更新右邊界right = mid - 1right = midright = mid - 1
優勢邏輯直觀,易理解避免 right 越界,代碼簡潔適合右側逼近問題

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80264.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80264.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80264.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

企業為何要求禁用缺省口令?安全風險及應對措施分析

在當今數字化時代&#xff0c;企業網絡安全面臨著前所未有的挑戰。缺省口令的使用是網絡安全中的一個重要隱患&#xff0c;許多企業在制定網絡安全紅線時&#xff0c;明確要求禁用缺省口令。本文將探討這一要求的原因及其對企業安全的重要性。 引言&#xff1a;一個真實的入侵場…

PostgreSQL 中的權限視圖

PostgreSQL 中的權限視圖 PostgreSQL 提供了多個系統視圖來查詢權限信息&#xff0c;雖然不像 Oracle 的 DBA_SYS_PRIVS 那樣集中在一個視圖中&#xff0c;但可以通過組合以下視圖獲取完整的系統權限信息。 一 主要權限相關視圖 Oracle 視圖PostgreSQL 對應視圖描述DBA_SYS_…

【防火墻 pfsense】1簡介

&#xff08;1&#xff09; pfSense 有以下可能的用途&#xff1a; 邊界防火墻 路由器 交換機 無線路由器 / 無線接入點 &#xff08;2&#xff09;邊界防火墻 ->要充當邊界防火墻&#xff0c;pfSense 系統至少需要兩個接口&#xff1a;一個廣域網&#xff08;WAN&#xff0…

數據庫+Docker+SSH三合一!深度評測HexHub的全棧開發體驗

作為一名技術博主&#xff0c;我最近一直被各種開發工具切換搞得焦頭爛額。數據庫要用Navicat&#xff0c;服務器管理得開Termius&#xff0c;Docker操作還得切到命令行&#xff0c;每天光在不同工具間切換就浪費了大量時間。直到團隊里的一位架構師向我推薦了HexHub這個一體化…

第十天 Shader編程:編寫簡單表面著色器 Addressable資源管理系統 DOTS(面向數據技術棧)入門

前言 作為Unity初學者&#xff0c;在實現復雜場景時經常會遇到性能瓶頸。本文將帶你通過四個關鍵技術的實戰學習&#xff0c;掌握現代Unity開發的核心優化方案&#xff1a; Shader編程 - 編寫表面著色器控制物體渲染Addressable系統 - 實現高效資源管理DOTS技術棧 - 解鎖百萬…

項目自動化測試

一.設計測試用例(細致全面) 二.先引入所需要的pom.xml依賴 1.selenium依賴 2.webdrivermanager依賴 3.commons-io依賴 編寫測試用例–按照頁面對用例進行劃分,每個頁面是Java文件,頁面下的所有用例統一管理 三.common包(放入公用包) 類1utils 可以調用driver對象,訪問url …

ap無法上線問題定位(交換機發包沒有剝掉pvid tag)

一中學&#xff0c;新開的40臺appoe交換機核心交換機旁掛ac出口路由的組網&#xff0c;反饋ap無法上線&#xff0c;讓協助解決。 組網如下&#xff1a; 排查過程&#xff1a; 檢查ac的配置&#xff0c;沒有發現問題 發現配置沒有問題&#xff0c;vlan1000配置子接口&#xff…

第十七屆山東省職業院校技能大賽 中職組網絡建設與運維賽項

第十七屆山東省職業院校技能大賽 中職組網絡建設與運維賽項 賽題 B 卷 第十七屆山東省職業院校技能大賽中職組網絡建設與運維賽項 1 賽題說明 一、競賽項目簡介 “網絡建設與運維”競賽共分為以下三個模塊&#xff1a; ? 網絡理論測試&#xff1b; ? 網絡建設與調試&#xf…

關于QT信號、槽、槽函數的講解

也是好久沒有發帖子了&#xff0c;最近博主主要還是在邊學QT邊完成任務&#xff0c;所以進度很慢&#xff0c;但確實在這幾天對于QT自身槽和信號這類特殊的機制有了一定簡單的理解&#xff0c;所以還是想記錄下來&#xff0c;如果有初學者看到帖子對他有一定的幫助&#xff0c;…

YOLOv8 漲點新方案:SlideLoss FocalLoss 優化,小目標檢測效果炸裂!

YOLOv8優化秘籍&#xff1a;用SlideLoss和FocalLoss提升小目標檢測精度&#xff08;附代碼實戰&#xff09;?? ?&#x1f4cc; 核心問題&#xff1a;YOLOv8在檢測小物體時效果不夠好&#xff1f;?? YOLOv8雖然是強大的目標檢測模型&#xff0c;但在處理小物體或類別不平…

基于cubeMX的hal庫STM32實現MQ2煙霧濃度檢測

一、任務目標 使用STM32F103C8T6單片機&#xff0c;使用單片機AD模塊采集MQ2煙霧傳感器的數據&#xff0c;在OLED屏顯示檢測到的AD值、電壓值和濃度值&#xff08;ppm單位&#xff09;。 二、實現過程 1、MQ2煙霧傳感器的濃度轉化方法 &#xff08;1&#xff09;實驗所用的M…

Android之AI自動化測試--Midscene

文章目錄 前言一、準備工作1.安裝2.準備 API Key3.安裝 adb4.連接設備 二、yaml格式自動化腳本1. 腳本案例2.執行結果 三、文件結構變化android 部分 前言 字節 Web Infra團隊官宣Midscene 從 v0.15 開始支持 Android 自動化測試&#xff0c;本篇文章介紹yaml方式的Android自動…

類的六個默認成員函數

如果一個類中什么成員都沒有&#xff0c;簡稱為空類。 空類中真的什么都沒有嗎&#xff1f;并不是&#xff0c;任何類在什么都不寫時&#xff0c;編譯器會自動生成以下6個默認成員函數。 默認成員函數&#xff1a;用戶沒有顯式實現&#xff0c;編譯器會生成的成員函數稱為默認…

HarmonyOS Grid 網格列表可長按 item 拖動移動位置

方案一 @Component struct WorkCircleCreatePage {// 存儲車控列表的數組@State VehicleDoorArr: IVehicleDoor[] = []// 當前移動的Item索引@State CurrentIndex: number = -1// 拖動時顯示的數據@State MoveItem: IVehicleDoor = { title: , icon: }// 拖動時放大倍數@State…

海量數據筆試題--Top K 高頻詞匯統計

問題描述&#xff1a; 假設你有一個非常大的文本文件&#xff08;例如&#xff0c;100GB&#xff09;&#xff0c;文件內容是按行存儲的單詞&#xff08;或其他字符串&#xff0c;如 URL、搜索查詢詞等&#xff09;&#xff0c;單詞之間可能由空格或換行符分隔。由于文件巨大&…

【數據結構】Map與Set結構詳解

數據結構系列五&#xff1a;Map與Set(一) 一、接口的實現 1.方法上 2.成員上 二、Map的內外雙接口結構 1.實現 1.1外部Map接口的實現 1.1.1臨摹整體 1.1.2外部類實現整體 1.2內部Entry接口的實現 1.2.1臨摹內部 1.2.2內部類實現內部 2.關系 3.意義 3.1邏輯內聚 …

Electron使用WebAssembly實現CRC-32 原理校驗

Electron使用WebAssembly實現CRC-32 原理校驗 將C/C語言代碼&#xff0c;經由WebAssembly編譯為庫函數&#xff0c;可以在JS語言環境進行調用。這里介紹在Electron工具環境使用WebAssembly調用CRC-32 原理格式校驗的方式。 CRC-32 原理校驗函數WebAssembly源文件 C語言實現C…

【晶振】晶振的工作原理及其與單片機關系

晶振(晶體振蕩器)是電子設備中常見的元件,其核心功能是提供穩定的時鐘信號,而單片機(MCU)依賴這一信號來同步內部操作。以下是晶振的工作原理及其與單片機關系的詳細說明: 一、晶振的工作原理 壓電效應與諧振 晶振的核心是石英晶體,利用其壓電效應: 當在晶體兩端施加電…

【Oracle專欄】函數中SQL拼接參數 報錯處理

Oracle相關文檔,希望互相學習,共同進步 風123456789~-CSDN博客 1.背景 最近同事反饋了一個很奇怪的問題,即有一個函數,入參是當前年月,主要作用是通過SQL語句將不合規的數據插入到指定表中,插入數據時帶上入參的年月參數。當前問題:單獨測試SQL沒有問題可以執行成功,…

nodejs之Express-介紹、路由

五、Express 1、express 介紹 express 是一個基于 Node.js 平臺的極簡、靈活的 WEB 應用開發框架,官方網址: https://www.expressjs.com.cn/ 簡單來說,express 是一個封裝好的工具包,封裝了很多功能,便于我們開發 WEB 應用(HTTP 服務) (1)基本使用 第一步:初始化項目并…