面試150,數組 / 字符串

27. 移除元素

在這里插入圖片描述

class Solution:def removeElement(self, nums: List[int], val: int) -> int:# 把不等于 val 的值移動到前面n = len(nums)left = 0for right in range(n):if nums[right] != val:nums[left] = nums[right]left += 1return left

26. 刪除有序數組中的重復項

在這里插入圖片描述

只保留 1 個元素

class Solution:def removeDuplicates(self, nums: List[int]) -> int:n = len(nums) left = 0  # 指向有效數組的最后一個元素# right 遍歷數組, 每次與有效數組最后一個元素比較是否相同for right in range(n):if nums[right] != nums[left]:left += 1nums[left] = nums[right]return left + 1

80. 刪除有序數組中的重復項 II

在這里插入圖片描述
保留 k 個元素,次數 k = 2

class Solution:def removeDuplicates(self, nums: List[int]) -> int:n = len(nums)left = 0  # 指向有效數組的后一個位置k = 2  # 保留兩個for right in range(n):if left < k or nums[right] != nums[left-k]:nums[left] = nums[right]left += 1return left

274. H 指數

在這里插入圖片描述
一般的情況下

class Solution:def hIndex(self, citations: List[int]) -> int:n = len(citations)cnt = [0] * (n + 1)  # cnt[i] 引用次數 >= i 的數目for v in citations:cite = min(v, n)  # 引用次數大于 n 的情況, 算作ncnt[cite] += 1s = 0for i in range(n, -1, -1):s += cnt[i]  # 引用次數>=i的數量if s >= i:return i

有序的情況下

class Solution:def hIndex(self, citations: List[int]) -> int:# 有h篇論文的cite次數>=hn = len(citations)citations.sort()ans = 0for i, v in enumerate(citations):d = n - i + 1  # 剩余文章數if v >= d:return d

380. O(1) 時間插入、刪除和獲取隨機元素

在這里插入圖片描述
list 刪除尾元素的速度為 O(1)
所以刪除的時候,可以將待刪除的值與末尾元素交換,然后刪除末尾元素

from random import choice
class RandomizedSet:def __init__(self):self.nums = []self.indices = {}  # { val: 在nums中的下標 }def insert(self, val: int) -> bool:if val in self.indices:return False# 如果不在, 則在末尾插入元素self.indices[val] = len(self.nums)self.nums.append(val)return Truedef remove(self, val: int) -> bool:if val not in self.indices:return Falseid = self.indices[val]  # val在nums中的下標# 1.將末尾元素與待刪除元素的位置交換self.nums[id] = self.nums[-1]  # 將末尾元素的值移動到當前val位置self.indices[self.nums[id]] = id  # 更新對應的id# 刪除 valself.nums.pop()del self.indices[val]return Truedef getRandom(self) -> int:return choice(self.nums)

134. 加油站

在這里插入圖片描述
“已經在谷底了,怎么走都是向上。”

下圖為,從 0 加油站出發,到達每個站時的油量變化
可以看出,當走到 3 號加油站時,油量達到最低
在這里插入圖片描述
所以從該點出發,之后的油量都不會比當前還低

在這里插入圖片描述

同時,判斷 sum(gas)sum(cost) 的大小關系

  • 如果 sum(gas) >= sum(cost) ,則一定有解
  • 反之沒有,返回 -1
class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:# 先計算從 0 號加油站出發的油量變化,然后從中找到油量最低時所處的加油站ans = 0min_s = 0  # 表示從 0 出發遇到的最小油量點s = 0for i, (g, c) in enumerate(zip(gas, cost)):s += g - c  # 在 i 處加油,然后出發從 i 到 i+1if s < min_s:min_s = s  # 更新最小油量ans = i + 1  # 注意 s 減去 c 之后,汽車在 i+1 而不是 i# 循環結束后,s 即為 gas 之和減去 cost 之和if s < 0:  # 說明不存在可行解return -1else:return ans

13. 羅馬數字轉整數

在這里插入圖片描述

class Solution:def romanToInt(self, s: str) -> int:# 小數在前表示<減去>, 小數在后表示<加上># 從后往前遍歷, 判斷當前數是否比上一個數大# 如果大于上一個數, 則直接加, 反之用減d = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}s = s[::-1]last_val = 0ans = 0for c in s:v = d[c]if v >= last_val:ans += velse:ans -= vlast_val = vreturn ans

12. 整數轉羅馬數字

在這里插入圖片描述

class Solution:def intToRoman(self, num: int) -> str:hashmap = {1000:'M', 900:'CM', 500:'D', 400:'CD',100:'C', 90:'XC',50:'L', 40:'XL', 10:'X', 9:'IX', 5:'V', 4:'IV', 1:'I'}ans = ''for key in hashmap:if num // key != 0:count = num // keyans += hashmap[key] * countnum %= keyreturn ans


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

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

相關文章

【江科大STM32】TIM輸入捕獲模式PWMI模式測頻率

一、輸入捕獲測頻率 接線圖&#xff1a; 測信號的輸入引腳為PA6&#xff0c;信號從PA6進來&#xff0c;待測的PWM信號也是STM32自己生成的&#xff0c;輸出引腳是PA0&#xff0c;所以接線這里直接用一根線將PA0引到PA6就可以了。 如果有信號發生器的話&#xff0c;也可以設置成…

湖倉一體化及冷、熱、實時三級存儲

一、湖倉一體化&#xff08;Lakehouse&#xff09; 湖倉一體化&#xff08;Lakehouse&#xff09;是數據湖&#xff08;Data Lake&#xff09;與數據倉庫&#xff08;Data Warehouse&#xff09;的結合&#xff0c;旨在解決傳統數據架構中數據孤島、存儲冗余、計算性能不足等問…

go切片定義和初始化

1.簡介 切片是數組的一個引用&#xff0c;因此切片是引用類型&#xff0c;在進行傳遞時&#xff0c;遵守引用傳遞的機制。切片的使用和數組類似&#xff0c;遍歷切片、訪問切片的元素和切片的長度都一樣。。切片的長度是可以變化的&#xff0c;因此切片是一個可以動態變化的數…

游戲引擎學習第138天

倉庫:https://gitee.com/mrxiao_com/2d_game_3 資產&#xff1a;game_hero_test_assets_003.zip 發布 我們的目標是展示游戲運行時的完整過程&#xff0c;從像素渲染到不使用GPU的方式&#xff0c;我們自己編寫了渲染器并完成了所有的工作。今天我們開始了一些新的內容&#…

畢業項目推薦:基于yolov8/yolov5/yolo11的暴力行為檢測識別系統(python+卷積神經網絡)

文章目錄 概要一、整體資源介紹技術要點功能展示&#xff1a;功能1 支持單張圖片識別功能2 支持遍歷文件夾識別功能3 支持識別視頻文件功能4 支持攝像頭識別功能5 支持結果文件導出&#xff08;xls格式&#xff09;功能6 支持切換檢測到的目標查看 二、數據集三、算法介紹1. YO…

docker中kibana啟動后,通過瀏覽器訪問,出現server is not ready yet

問題&#xff1a;當我在瀏覽器訪問kibana時&#xff0c;瀏覽器給我報了server is not ready yet. 在網上試了很多方法&#xff0c;都未能解決&#xff0c;下面是我的方法&#xff1a; 查看kibana日志&#xff1a; docker logs -f kibana從控制臺打印的日志可以發現&#xff…

在 Docker 中,無法直接將外部多個端口映射到容器內部的同一個端口

Docker 的端口映射是一對一的&#xff0c;即一個外部端口只能映射到容器內部的一個端口。 1. 為什么不能多對一映射&#xff1f; 端口沖突&#xff1a; 如果外部多個端口映射到容器內部的同一個端口&#xff0c;Docker 無法區分外部請求應該轉發到哪個內部端口&#xff0c;會…

游戲引擎學習第120天

倉庫:https://gitee.com/mrxiao_com/2d_game_3 上次回顧&#xff1a;周期計數代碼 我們正在進行一個項目的代碼優化工作&#xff0c;目標是提高性能。當前正在優化某個特定的代碼片段&#xff0c;已經將其執行周期減少到48個周期。為了實現這一目標&#xff0c;我們設計了一個…

C++中的.h文件一般是干什么的?

在C中&#xff0c;.h 文件通常是 頭文件&#xff08;Header File&#xff09;&#xff0c;它們的主要作用是聲明類、函數、常量、宏以及其他在多個源文件&#xff08;.cpp文件&#xff09;之間共享的元素。頭文件提供了一個接口&#xff0c;使得不同的源文件能夠訪問這些共享的…

基礎算法總結

基礎算法總結 1、模擬1.1 什么是模擬算法1.2 算法題1.2.1 多項式輸出1.2.2 蛇形方陣 2 高精度算法2.1 什么是高精度算法2.2 算法題2.2.1 高精度加法 2.2.2 高精度乘法 3 普通枚舉3.1 算法題3.1.1 鋪地毯 3.1.2 回文日期 4 前綴和算法4.1 什么是前綴和4.2 算法題4.2.1 最大子段和…

密碼學(哈希函數)

4.1 Hash函數與數據完整性 數據完整性&#xff1a; 檢測傳輸消息&#xff08;加密或未加密&#xff09;的修改。 密碼學Hash函數&#xff1a; 構建某些數據的簡短“指紋”&#xff1b;如果數據被篡改&#xff0c;則該指紋&#xff08;以高概率&#xff09;不再有效。Hash函數…

游戲引擎學習第135天

倉庫:https://gitee.com/mrxiao_com/2d_game_3 回顧 game_asset.cpp 的創建 在開發過程中&#xff0c;不使用任何現成的游戲引擎或第三方庫&#xff0c;而是直接基于 Windows 進行開發&#xff0c;因為 Windows 目前仍然是游戲的標準平臺&#xff0c;因此首先在這個環境中進行…

Linux:文件描述符與重定向

目錄 一、文件描述符 1.文件內核對象 2.文件描述符分配原則 二、文件重定向 1.重定向的現象 輸出重定向 輸入重定向 dup2 2.重定向的使用 三、標準輸出和標準錯誤 繼上篇文章中&#xff0c;我們了解了fd打印的值為文件描述符&#xff0c;那么它還有什么作用呢&…

白盒測試(3):PCB阻抗測試方法

PCB阻抗測試是確保信號完整性的關鍵&#xff0c;通過測量走線的特性阻抗&#xff0c;驗證其是否符合設計目標。常用方法包括時域反射法&#xff08;TDR&#xff09;、網絡分析儀法和仿真軟件法。TDR通過分析反射信號定位阻抗異常&#xff0c;網絡分析儀通過S參數計算阻抗&#…

CentOS 7 安裝Nginx-1.26.3

無論安裝啥工具、首先認準了就是官網。Nginx Nginx官網下載安裝包 Windows下載&#xff1a; http://nginx.org/download/nginx-1.26.3.zipLinxu下載 wget http://nginx.org/download/nginx-1.26.3.tar.gzLinux安裝Nginx-1.26.3 安裝之前先安裝Nginx依賴包、自行選擇 yum -y i…

筆記:如何使用XAML Styler以及在不同的開發環境中使用一致

一、目的&#xff1a;分享如何使用XAML Styler以及在不同的開發環境中使用一致 XAML Styler 是一個 Visual Studio 擴展&#xff0c;用于自動格式化和整理 XAML 文件。它可以幫助開發者保持一致的代碼風格&#xff0c;提高代碼的可讀性和可維護性。以下是如何在 Visual Studio …

分布式存儲學習——HBase概述

1.1 HBase概述 1.1.1 理解大數據背景 1.1.2 HBase是什么 1.1.3 HBase與Hadoop的關系 1.1.4 HBase的核心功能模塊 1.1.5 HBase的應用場景和經典案例 1.1.6 小結 本文參考于學校《HBase應用于開發》教材 1.1 HBase概述 本節將介紹大數據背景和HBase的基本概念&#xff0c…

交叉編譯openssl及curl

操作環境&#xff1a;Ubuntu20.04 IDE工具&#xff1a;Clion2020.2 curl下載地址&#xff1a;https://curl.se/download/ openssl下載地址&#xff1a;https://openssl-library.org/source/old/index.html 直接交叉編譯curl會報錯找不到openssl&#xff0c;所以需要先交叉編…

MDM 如何徹底改變醫療設備的遠程管理

在現代醫療行業迅速發展的格局中&#xff0c;醫院和診所越來越依賴諸如醫療平板和移動工作站等移動設備。這些設備在提高工作效率和提供卓越的患者護理方面發揮著關鍵作用。然而&#xff0c;隨著它們的廣泛使用&#xff0c;也帶來了一系列挑戰&#xff0c;例如在不同地點確保數…

零基礎C語言學習日志22(自定義類型:聯合和枚舉)

目錄 聯合體 聯合體類型的聲明 聯合體的特點 相同成員聯合體和結構體的對比 聯合體大小的計算 例子 枚舉類型 枚舉類型的聲明 枚舉類型的優點 枚舉類型的使用 聯合體 聯合體類型的聲明 像結構體一樣&#xff0c;聯合體也是由一個或者多個成員構成&#xff0c;這些成…