【leetcode64-69二分查找、70-74棧、75-77堆】

二分查找[64-69]

時間復雜度O(log n),要想到二分排序

35.搜索插入位置

在這里插入圖片描述

class Solution:def searchInsert(self, nums: List[int], target: int) -> int:left = 0right = len(nums)-1while left <= right:  #左閉右閉mid = (left+right)//2if nums[mid] < target:left = mid + 1elif nums[mid] > target:right = mid -1else: return midreturn mid+1 if nums[mid] < target else mid

74.搜索二維矩陣

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

class Solution:def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:m = len(matrix)  #行n = len(matrix[0])  #列left = 0right = m*n -1while left <= right:mid = (left+right)//2i = mid // nj = mid % nif matrix[i][j] < target:left = mid + 1elif matrix[i][j] > target:right = mid - 1else:return Truereturn False

34.在排序數組中查找元素的第一個和最后一個位置

在這里插入圖片描述

class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:if len(nums) == 0: return [-1,-1]left = 0right = len(nums)-1while left <= right:mid = (left+right)//2if nums[mid] < target:left = mid +1elif nums[mid] > target:right = mid-1else :i = j = midwhile i>=0 and nums[i] == target:i -= 1while j<len(nums) and nums[j] == target:j += 1return [i+1, j-1]return [-1,-1]
# 1、首先,在 nums 數組中二分查找得到第一個大于等于 target的下標leftBorder;
# 2、在 nums 數組中二分查找得到第一個大于等于 target+1的下標, 減1則得到rightBorder;
# 3、如果開始位置在數組的右邊或者不存在target,則返回[-1, -1] 。否則返回[leftBorder, rightBorder]
class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:def binarySearch(nums:List[int], target:int) -> int:left, right = 0, len(nums)-1while left<=right: # 不變量:左閉右閉區間middle = left + (right-left) //2 if nums[middle] >= target: right = middle - 1else: left = middle + 1return left  # 若存在target,則返回第一個等于target的值 leftBorder = binarySearch(nums, target) # 搜索左邊界rightBorder = binarySearch(nums, target+1) -1  # 搜索右邊界if leftBorder == len(nums) or nums[leftBorder]!= target: # 情況一和情況二return [-1, -1]return [leftBorder, rightBorder]

33.搜索旋轉排序數組

在這里插入圖片描述

class Solution:def search(self, nums: List[int], target: int) -> int:left = 0right = len(nums)-1while left<= right:mid = (left+right)//2   #mid要么左邊升序,要么右邊升序if nums[mid] == target: return midelif nums[mid] < nums[right]:   #[mid,right]右邊升序if target > nums[mid] and target <= nums[right]: #target在區間(mid,right]left = mid +1else: right = mid-1else:   #[left, mid],左邊升序if target >= nums[left] and target < nums[mid]: #target在區間[left, mid)right = mid -1else: left = mid +1 return -1

153.尋找旋轉排序數組中的最小值

![在這里插入圖片描述](https://img-blog.csdnimg.cn/direct/7dcdd12d410747f98f3018ebdd83b7d7.png

4.尋找兩個正序數組的中位數

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

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

相關文章

【算法訓練記錄——Day39】

Day39——動態規劃Ⅱ 1.leetcode_62不同路徑2.leetcode_63不同路徑Ⅱ3.leetcode_343整數拆分4.leetcode_96不同的二叉樹搜索 1.leetcode_62不同路徑 思路&#xff1a;經典的動態規劃問題&#xff1a; dp[i][j]表示到達&#xff08;i&#xff0c;j&#xff09;位置時的不同路徑…

運維鍋總淺析云原生DevOps工具

本文從Tekton與Kubevela、Jenkins、GitLab CI的區別與聯系對常見的云原生DevOps工具進行對比分析&#xff0c;最后給出DevOps工具選型思路。希望對您有所幫助&#xff01; 一、DevOps簡介 DevOps是一種結合了軟件開發&#xff08;Development&#xff09;和IT運維&#xff08…

怎么在windows、linux、mac上安裝pnpm呢?

怎么在windows、linux、mac上安裝pnpm呢&#xff1f; 前言 如果您不使用獨立腳本或 pnpm/exe 來安裝 pnpm&#xff0c;則需要在系統上安裝 Node.js&#xff08;至少 v16.14&#xff09;。 原址&#xff1a;https://pnpm.io/zh/installation 使用獨立腳本安裝 即使沒有安裝…

登錄功能和校驗

基礎版 controller package com.web.management.controller;import com.web.management.pojo.Emp; import com.web.management.pojo.Result; import com.web.management.service.EmpService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.anno…

Ignis 應用: 社交 + 游戲 + 工業4.0,Ignis 構建Web3生態圈

引言 在數字經濟快速發展的今天&#xff0c;Web3技術為我們帶來了前所未有的變革。作為Ardor平臺的主要子鏈&#xff0c;Ignis公鏈在推動Web3生態系統建設中扮演了重要角色。本文將通過介紹Vessel Chain、Mythical Beings和Bridge Champ等應用&#xff0c;探討Ignis公鏈如何通…

GB/T 43566-2023中小學人造草面層足球場地檢測

人造草面層是指以類似天然草的合成纖維經機械編織固定于底布上形成人造草&#xff0c;至現場粘接并與彈性墊層等必要的其他材料組裝成整體的面層。 GB/T 43566-2023中小學人造草面層足球場地檢測項目&#xff1a; 測試項目 測試方法 人造草物理性能 GB/T 20394 人造草有害…

html+css+js文章模板

圖片 源代碼在圖片后面&#xff0c;點贊加關注&#xff0c;謝謝&#x1f604; 源代碼 <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width,…

redis的數據類型對應的使用場景

Redis提供了多種數據類型&#xff0c;每種數據類型都有其特定的適用場景。以下是Redis主要數據類型及其典型應用場景&#xff1a;1. 字符串(String) 應用場景&#xff1a;適用于存儲簡單的鍵值對數據&#xff0c;如用戶基本信息、計數器&#xff08;如網頁訪問次數&…

停車場車牌識別計費系統,用Python如何實現?

關注星標&#xff0c;每天學習Python新技能 前段時間練習過的一個小項目&#xff0c;今天再看看&#xff0c;記錄一下~ 項目結構 說明&#xff1a; datefile文件夾&#xff1a;保存車輛信息表的xlsx文件 file文件夾&#xff1a;保存圖片文件夾。ic_launcher.jpg是窗體的右上角…

周下載量20萬的npm包---store

https://www.npmjs.com/package/store <script setup> import { onMounted } from vue import store from storeonMounted(() > {store.set(user, { name: xutongbao })let user store.get(user)console.log(user) //對象console.log(localStorage.getItem(user)) //…

基于深度學習的換頭特效

基于深度學習的換頭特效是一項計算機視覺和圖像處理技術&#xff0c;旨在將一個人的臉部特征無縫替換到另一個人的頭部&#xff0c;同時保持自然和真實的視覺效果。這項技術廣泛應用于電影制作、虛擬現實、娛樂和社交媒體等領域。以下是關于這一領域的系統介紹&#xff1a; 1.…

linux nfs的使用

版權聲明&#xff1a;來自百度AI&#xff0c;此處記錄是方便日后查看&#xff0c;無任何商業用途 linux網絡文件共享服務之nfs NFS&#xff08;Network File System&#xff09;是一種允許計算機用戶或者操作系統通過網絡以類似本地的方式訪問文件的協議。以下是一個簡單的NF…

CesiumJS【Basic】- #056 繪制紋理填充多邊形(Entity方式)-使用shader

文章目錄 繪制紋理填充多邊形(Entity方式)-使用shader1 目標2 代碼2.1 main.ts繪制紋理填充多邊形(Entity方式)-使用shader 1 目標 使用Entity方式繪制繪制紋理填充多邊形 - 使用shader 2 代碼 2.1 main.ts import * as Cesium from cesium;const viewer = new Cesium…

搭建個人博客及錯誤記錄

搭建個人博客及錯誤記錄 文章目錄 搭建個人博客及錯誤記錄需要用到的網址2.推薦兩個參考教學視頻3.發布一篇博客個人主題配置的提醒localhost拒絕連接問題解決辦法ssh -T gitgithub.com失敗問題解決Deployer not found:git解決 可以根據目錄解決遇到的相同問題 需要用到的網址 …

朋友圈運營必備!一鍵轉發和自動轉發輕松搞定!

你還在手動發布多個微信號的朋友圈嗎&#xff1f; 現在&#xff0c;就教你一招&#xff0c;讓你輕松實現一鍵轉發和自動轉發朋友圈&#xff01; 首先&#xff0c;我們需要在個微管理系統上登錄自己的微信號&#xff0c;以便進行統一管理。這個系統可以多個微信號同時登錄&…

項目經驗-不同行業、不同風格的網站設計

網站UI設計的首要考慮點是布局與導航。合理的布局能夠確保信息清晰呈現&#xff0c;使用戶能夠快速定位所需內容。同時&#xff0c;簡潔明了的導航設計能夠引導用戶流暢瀏覽&#xff0c;減少迷失感。通過精心設計的布局和導航&#xff0c;可以提升用戶體驗&#xff0c;增強用戶…

Pointnet++改進即插即用系列:全網首發GLSA聚合和表示全局和局部空間特征|即插即用,提升特征提取模塊性能

簡介:1.該教程提供大量的首發改進的方式,降低上手難度,多種結構改進,助力尋找創新點!2.本篇文章對Pointnet++特征提取模塊進行改進,加入GLSA,提升性能。3.專欄持續更新,緊隨最新的研究內容。 目錄 1.理論介紹 2.修改步驟 2.1 步驟一 2.2 步驟二 2.3 步驟三 1.理論介…

深入剖析Tomcat(十五、十六) 關閉鉤子,保證Tomcat的正常關閉

《深入剖析Tomcat》書中第十五章講解了如何通過配置XML的方式來配置Tomcat的各個組件&#xff0c;并通過Digester庫來解析XML。我們常操作的xml文件應該就是 server.xml這個文件&#xff0c;當在一臺機器上部署多個Tomcat時&#xff0c;就必須修改連接器和 [“關閉Tomcat”程序…

網格搜索(Grid Search)及其Python和MATLAB實現

**背景&#xff1a;** 網格搜索&#xff08;Grid Search&#xff09;是一種常見的參數優化方法&#xff0c;用于在給定的參數范圍內搜索最優的參數組合&#xff0c;以優化模型的性能。該方法通過窮舉搜索參數空間中的所有可能組合&#xff0c;尋找最佳參數配置&#xff0c;是調…

Spring源碼九:BeanFactoryPostProcessor

上一篇Spring源碼八&#xff1a;容器擴展一&#xff0c;我們看到ApplicationContext容器通過refresh方法中的prepareBeanFactory方法對BeanFactory擴展的一些功能點&#xff0c;包括對SPEL語句的支持、添加屬性編輯器的注冊器擴展解決Bean屬性只能定義基礎變量的問題、以及一些…