LeetCode 每日一題 2024/7/1-2024/7/7

記錄了初步解題思路 以及本地實現代碼;并不一定為最優 也希望大家能一起探討 一起進步


目錄

      • 7/1 2065. 最大化一張圖中的路徑價值
      • 7/2 3115. 質數的最大距離
      • 7/3 3099. 哈沙德數
      • 7/4 3086. 拾起 K 個 1 需要的最少行動次數
      • 7/5 3033. 修改矩陣
      • 7/6 3101. 交替子數組計數
      • 7/7 1958. 檢查操作是否合法


7/1 2065. 最大化一張圖中的路徑價值

遞歸回溯 枚舉每種情況
每次回到0更新答案

def maximalPathQuality(values, edges, maxTime):""":type values: List[int]:type edges: List[List[int]]:type maxTime: int:rtype: int"""from collections import defaultdictg = defaultdict(list)for x,y,t in edges:g[x].append((y,t))g[y].append((x,t))visited = {0}global ansans = 0def dfs(u,t,va):global ansif u==0:ans = max(ans,va)for v,d in g[u]:if t+d <=maxTime:if v not in visited:visited.add(v)dfs(v,t+d,va+values[v])visited.discard(v)else:dfs(v,t+d,va)dfs(0,0,values[0])return ans

7/2 3115. 質數的最大距離

每個數值不大于100 可以得到所有質數
從前往后 從后往前依次尋找第一個遇到的質數
即可得到最小坐標和最大坐標

def maximumPrimeDifference(self, nums):""":type nums: List[int]:rtype: int"""primes = {2, 3, 5, 7, 11,13, 17, 19, 23, 29,31, 37, 41, 43, 47,53, 59, 61, 67, 71,73, 79, 83, 89, 97}n = len(nums)left,right=-1,-1for i in range(n):if nums[i] in primes:left = ibreakfor i in range(n-1,-1,-1):if nums[i] in primes:right = ibreakreturn right-left

7/3 3099. 哈沙德數

按定義求和 取余

def sumOfTheDigitsOfHarshadNumber(x):""":type x: int:rtype: int"""num = xv = 0while x>0:v += x%10x //=10return v if num%v==0 else -1

7/4 3086. 拾起 K 個 1 需要的最少行動次數

當前位置為i 有兩種情況可以撿起1
1.不變換數字:
如果有一個位置x nums[x]=1
x在i兩側 i-1<=x<=i+1只需要一步可以得到一個1
否則需要|x-i|步才可以得到一個1 至少需要2步
2.變換數字:
將鄰近數字變為1 交換 2步得到一個1

設f(i)為左右1位鄰居內的1個數
如果f(i)+maxChanges>=k 那么先將左右兩邊的先拾起
再使用變換數字的方法得到1
如果f(i)+maxChanges<k 那么先拾取左右兩邊 使用變換數字方法
最后剩下k-maxChanges個需要不變換數字移動拾取
使用leftc,rightc維護[left,i),(i,right]區間內1的個數
lefts,rights維護區間內值為1的下標和
如果[left,i)區間內的leftc個1要拾取需要每一個都到i
步數為 i*leftc-lefts 右側同理
從小到大枚舉i
根據左右端點離i的遠近 去掉較遠的

def minimumMoves(nums, k, maxChanges):""":type nums: List[int]:type k: int:type maxChanges: int:rtype: int"""n = len(nums)def f(i):return sum(nums[max(i-1,0):min(i+2,n)])left,right=0,-1lefts,rights=0,0leftc,rightc=0,0ans = float("inf")for i in range(n):if f(i)+maxChanges>=k:if k<=f(i):ans = min(ans,k-nums[i])else:ans = min(ans,2*k-f(i)-nums[i])if k<=maxChanges:continuewhile right+1<n and (right-i<i-left or leftc+rightc+maxChanges<k):if nums[right+1]==1:rightc+=1rights+=right+1right+=1while leftc+rightc+maxChanges>k:if right-i<i-left or right-i==i-left and nums[left]==1:if nums[left]==1:leftc-=1lefts-=leftleft+=1else:if nums[right]==1:rightc-=1rights-=rightright-=1ans = min(ans,leftc*i-lefts+rights-rightc*i+2*maxChanges)if nums[i]==1:leftc+=1lefts+=irightc-=1rights-=ireturn ans

7/5 3033. 修改矩陣

遍歷 遇到-1尋找當前列最大值替換

def modifiedMatrix(matrix):""":type matrix: List[List[int]]:rtype: List[List[int]]"""m,n=len(matrix),len(matrix[0])for j in range(n):maxv=-1for i in range(m):if matrix[i][j]==-1:if maxv==-1:maxv=max([matrix[x][j] for x in range(m)])matrix[i][j]=maxvreturn matrix

7/6 3101. 交替子數組計數

遍歷數組記錄上一個數數值和當前最長交替子數組長度
如果數值不一致 則交替子數組長度+1
否則子數組長度為1
最長長度即為當前元素結尾的子數組個數 累加

def countAlternatingSubarrays(nums):""":type nums: List[int]:rtype: int"""ans = 0cur = 0pre =-1for num in nums:if pre!=num:cur+=1else:cur=1pre=numans+=curreturn ans

7/7 1958. 檢查操作是否合法

遍歷八個方向 檢查是否存在好線段

def checkMove(board, rMove, cMove, color):""":type board: List[List[str]]:type rMove: int:type cMove: int:type color: str:rtype: bool"""def check(dx,dy):x,y = rMove+dx,cMove+dystep = 1while 0<=x<8 and 0<=y<8:if board[x][y]=='.':return Falseif step==1:if board[x][y]==color:return Falseelse:if board[x][y]==color:return Truestep+=1x+=dxy+=dyreturn Falsedx = [1,1,0,-1,-1,-1,0,1]dy = [0,1,1,1,0,-1,-1,-1]for i in range(8):if check(dx[i],dy[i]):return Truereturn False

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

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

相關文章

第一周周日總結

題目總結 1.給你一個整數數組 hours&#xff0c;表示以 小時 為單位的時間&#xff0c;返回一個整數&#xff0c;表示滿足 i < j 且 hours[i] hours[j] 構成 整天 的下標對 i, j 的數目。 整天 定義為時間持續時間是 24 小時的 整數倍 。 例如&#xff0c;1 天是 24 小時…

C# MathNet

Vector使用 Build.Dense 創建列向量:列向量轉行向量&#xff08;行矩陣&#xff09;:使用 DenseOfArray 方法:使用 PointwiseMultiply 進行向量元素級乘法:計算向量的點積&#xff08;內積&#xff09;&#xff1a;訪問向量的特定元素&#xff1a;遍歷向量中的所有元素&#xf…

公眾號文章閱讀20w+?你猜騰訊給了我多少錢?

前兩天寫的一篇文章&#xff0c; 《1000T的文件怎么能快速從南京傳到北京&#xff1f;最佳方案你肯定想不到》 一不小心被平臺推薦&#xff0c;閱讀量居然達到了20w&#xff08;這篇收益在文章底部&#xff01;&#xff09;。 留言也是相當精彩 說來慚愧&#xff0c;這篇文章我…

【74LS163做24進制計數器】2021-11-19

緣由用74LS163做24進制計數器-其他-CSDN問答,仿真multisim兩個74LS163芯片如何構成47進制計數器-吐槽問答-CSDN問答 參考74ls163中文資料匯總&#xff08;74ls163引腳圖及功能_內部結構圖及應用電路&#xff09; - 電子發燒友網

蒼穹外賣 ...待更新

蒼穹外賣 1、 阿里云OSS2、菜品分類查詢 1、 阿里云OSS 工具類 package com.sky.utils;import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import lombok.AllArgsConstructor…

深入理解Qt智能指針

目錄 1.引言 2.共享數據 2.1.特點 2.2.QSharedData 2.3.隱式共享 2.4.顯示共享 3.共享指針 3.1.QSharedPointer 3.2.QWeakPointer 4.范圍指針 4.1.QScopedPointer 4.2.QScopedArrayPointer 5.追蹤特定QObject對象生命 6.總結 1.引言 在 Qt 中&#xff0c;智能指針…

計算樣本之間的相似度

文章目錄 前言一、距離度量1.1 歐幾里得距離&#xff08;Euclidean Distance&#xff09;1.2 曼哈頓距離&#xff08;Manhattan Distance&#xff09;1.3 切比雪夫距離&#xff08;Chebyshev Distance&#xff09;1.4 閔可夫斯基距離&#xff08;Minkowski Distance&#xff09…

docker容器技術、k8s的原理和常見命令、用k8s部署應用步驟

容器技術 容器借鑒了集裝箱的概念&#xff0c;集裝箱解決了什么問題呢&#xff1f;無論形狀各異的貨物&#xff0c;都可以裝入集裝箱&#xff0c;集裝箱與集裝箱之間不會互相影響。由于集裝箱是標準化的&#xff0c;就可以把集裝箱整齊擺放起來&#xff0c;裝在一艘大船把他們…

瀏覽器插件利器-allWebPluginV2.0.0.14-stable版發布

allWebPlugin簡介 allWebPlugin中間件是一款為用戶提供安全、可靠、便捷的瀏覽器插件服務的中間件產品&#xff0c;致力于將瀏覽器插件重新應用到所有瀏覽器。它將現有ActiveX插件直接嵌入瀏覽器&#xff0c;實現插件加載、界面顯示、接口調用、事件回調等。支持谷歌、火狐等瀏…

Spring Boot+Blockchain:區塊鏈入門Demo

1. 引言 區塊鏈技術近年來迅速發展&#xff0c;其去中心化、不可篡改和透明性等特點吸引了眾多開發者和企業的關注。為了便于理解和應用區塊鏈技術&#xff0c;本文將介紹如何使用Spring Boot集成區塊鏈&#xff0c;構建一個簡單的區塊鏈Demo。 2. 項目準備 2.1 環境要求 在…

MYSQL安裝及環境配置

1.數據庫下載 1.1 瀏覽器下載相應版本&#xff0c;如果相應版本不在此頁&#xff0c;可點擊Archives &#xff0c;然后選擇相應版本 https://dev.mysql.com/downloads/mysql/ 1.2 放置指定目錄&#xff0c;并將其解壓 2.配置數據庫環境變量 2.1 使用電腦win鍵 Q &#xff0c;…

在C++中使用的錯誤處理策略

在C中&#xff0c;錯誤處理是一個重要且復雜的主題&#xff0c;因為它要求開發者在設計和編碼時考慮到程序可能遇到的各種異常情況。C提供了幾種不同的機制來處理錯誤&#xff0c;每種機制都有其適用的場景和優缺點。下面我將概述幾種常見的C錯誤處理策略&#xff1a; 1. 返回…

SQL的時間格式和文本靈活轉換

日期的格式&#xff0c;在日常的數據分析中&#xff0c;常常使用 特別是在按照日、月、年進行匯總分析&#xff0c;使用起來&#xff0c;往往會有差異 如果格式比較復雜&#xff0c;可以考慮進行文本轉化的處理 這里有比較推薦的函數&#xff1a; 1.CONVERT()函數 適用于SQL …

51單片機STC89C52RC——16.1 五項四線步進電機

目的/效果 讓步進電機 正向轉90度&#xff0c;逆向轉90度 一&#xff0c;STC單片機模塊 二&#xff0c;步進電機 2.2 什么是步進電機&#xff1f; 步進電機可以理解為&#xff1a;是一個按照固定步幅運動的“小型機器”。它與普通電機不同點在于&#xff0c;普通電機可以持…

CompletionService

必備知識&#xff1a; 三種創建線程的方式 java線程池 CompletionService是Java并發庫中的一個接口&#xff0c;用于簡化處理一組異步任務的執行和結果收集。它結合了Executor和BlockingQueue的功能&#xff0c;幫助管理任務的提交和完成。CompletionService的主要實現類是Exe…

前端必修技能:高手進階核心知識分享 - CSS 陰影屬性詳解

CSS 涉及設計到陰影的相關內容包括三個方面&#xff1a;box-shadow屬性&#xff08;盒子陰影&#xff09;、 text-shadow屬性&#xff08;文本陰影&#xff09;、drop-shadow濾鏡。 本篇文章旨在詳細介紹和分析三種陰影的具體參數設置和典型用例。 box-shadow屬性&#xff08;…

預防臨床預測模型中可能的“算法歧視”

預防臨床預測模型中可能的“算法歧視” 概要&#xff1a;如果訓練數據中存在性別方面的不均衡&#xff0c;會讓訓練出的模型存在性別方面的“算法歧視”&#xff0c;進而導致某種性別下存在更多的誤診誤治&#xff0c;最終造成醫療資源分配的不公平的倫理問題&#xff0c;導致模…

04.C1W3.Vector Space Models

往期文章請點這里 目錄 Vector Space ModelsWord by Word and Word by DocWord by Document DesignWord by Document DesignVector Space Euclidean DistanceEuclidean distance for n-dimensional vectors Euclidean distance in PythonCosine Similarity: IntuitionCosine S…

STM32-SPI和W25Q64

本內容基于江協科技STM32視頻學習之后整理而得。 文章目錄 1. SPI&#xff08;串行外設接口&#xff09;通信1.1 SPI通信簡介1.2 硬件電路1.3 移位示意圖1.4 SPI時序基本單元1.5 SPI時序1.5.1 發送指令1.5.2 指定地址寫1.5.3 指定地址讀 2. W25Q642.1 W25Q64簡介2.2 硬件電路2…

嵌入式C語言面試相關知識——內存管理(不定期更新)

嵌入式C語言面試相關知識——內存管理&#xff08;不定期更新&#xff09; 一、博客聲明二、自問題目1、嵌入式系統的內存布局是怎么樣的&#xff1f;2、動態內存分配在嵌入式系統中的使用有什么注意事項&#xff1f;3、什么是內存碎片&#xff0c;如何減少內存碎片&#xff1f…