前綴和 之 哈希表 之 和 的奇偶與倍數

文章目錄

  • 930.和相同的二元子數組
  • 523.連續的子數組和

  • 求解連續子數組的和的問題,常常會使用到這個前綴和的思路,當然當數組存在單調性的時候,可以考慮使用不定長滑動窗口,在這里解釋一下,何為數組的和存在這個單調性?就是nums[i]>=0或者nums[i]<=0,就是最終這個窗口的和值是隨著窗口的大小變大而窗口的和值是隨著變大或者變小的
  • 當然,前綴和更能處理這種非單調性的問題,當出現子數組的和的某種性質的統計或者判斷的時候,我們常常會使用到哈希表進行對應的存儲

930.和相同的二元子數組

930.和相同的二元子數組

在這里插入圖片描述

  • 這個題目有多種解法,由于存在這個nums[i]>=0,所以是存在這個單調性的問題,所以考慮使用滑動窗口,當然,由于這個是恰好型的問題,所以考慮使用兩個至少型的計算進行轉化
class Solution:# 定義嵌套方法,并不使用 self參數def numSub(self,nums:List[int],goal:int ) ->int :left = count = ans = 0for right,i in enumerate(nums):count+=iwhile count >= goal and left <= right:count-=nums[left]left+=1ans += leftreturn ansdef numSubarraysWithSum(self, nums: List[int], goal: int) -> int:# 打算使用越長越好的方法,求解出和 >= goal 和 >= goal+1的情況return self.numSub(nums,goal) - self.numSub(nums,goal+1)
  • 更加通用的方法是,使用這個前綴和+哈希表,對于子數組的和為goal,我們只需使用哈希表存儲對應的前綴和的次數,對于子數組的和為goal,只需查詢當前的cusum-goal是否存在哈希表中,如果存在,則加上對應的次數,最后再更新這個前綴出現的次數即可
from collections import defaultdict
class Solution:def numSubarraysWithSum(self, nums: List[int], goal: int) -> int:n = len(nums)# 子數組要求是和為goal的子數組的數目,我們只需不斷累加,記錄對應的累加和的出現次數cursum = 0store = defaultdict(int)store[0] += 1ans = 0for i,c in enumerate(nums):cursum += c if cursum - goal in store:ans += store[cursum-goal]store[cursum]+=1return ans

523.連續的子數組和

523.連續的子數組和

在這里插入圖片描述

  • 倍數的問題,就不是單純存儲這個前綴和的出現的次數了,仔細想想,得存儲這個%k的余數的情況,因為兩個同余數的前綴和作差,那么該子數組的和肯定是k的倍數,由于考慮的是長度問題,所以哈希表記錄的是余數出現的位置的下標
class Solution:def checkSubarraySum(self, nums: List[int], k: int) -> bool:# 字典用于存儲余數及其對應的索引,初始化為 {0: -1} 以處理從索引0開始的子數組remainder_dict = {0: -1}cumulative_sum = 0  # 累加和# 遍歷數組中的每個元素for i, num in enumerate(nums):cumulative_sum += num  # 更新累加和rem = cumulative_sum % k  # 計算當前累加和對k的余數# 如果余數已經存在于字典中if rem in remainder_dict:# 檢查當前子數組的長度是否至少為2if i - remainder_dict[rem] >= 2:return Trueelse:# 如果余數不存在,則記錄當前余數對應的索引remainder_dict[rem] = i# 如果沒有找到符合條件的子數組,返回Falsereturn False

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

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

相關文章

Docker Compose 和 Kubernetes(K8s)對比

Docker Compose 和 Kubernetes&#xff08;K8s&#xff09;在某些方面有相似的功能&#xff0c;但它們的 核心用途和適用場景不同。以下是它們的主要區別和聯系&#xff1a; 1. Docker Compose 和 Kubernetes 的區別 對比項Docker ComposeKubernetes&#xff08;K8s&#xff0…

晶藝代理,100V3.5A高耐壓LA1823完全替換MP9487--啟燁科技有限公司

晶藝品牌LA1823是異步降壓轉換器&#xff0c;COT控制&#xff0c;PFM工作模式, 150KHz/ 250KHz/ 450KHz &#xff0c;開關頻率可調節&#xff0c;輸入電壓4.5~100V&#xff0c;2A平均電流&#xff0c;峰值電流3.5A&#xff0c;采用ESOP8封裝。 晶藝LA1823的特性&#xff1a; 4.…

PLC控制柜在技術創新驅動中功能演進 尤勁恩科技

在智能制造體系中&#xff0c;PLC控制柜不僅承擔著傳統設備控制的基礎功能&#xff0c;更通過工業以太網、PROFIBUS等現場總線技術&#xff0c;構建起分布式控制系統&#xff08;DCS&#xff09;。這種拓撲結構使生產線具備實時數據采集、遠程監控和智能決策能力&#xff0c;顯…

【JavaEE】Spring Boot 日志

目錄 一、日志概述二、使用日志2.1 打印日志2.2 日志框架2.2.1 門面 / 外觀 模式 2.3 日志級別2.3.1 六大分類2.3.2 使用 2.4 日志級別配置2.5 日志的持久化2.6 日志文件分割2.7 日志文件格式2.8 Slf4j 簡單打印日志 一、日志概述 ?志主要是為了發現問題, 分析問題, 定位問題…

代碼隨想錄算法訓練營第34天 | 62.不同路徑 63. 不同路徑 II 整數拆分 不同的二叉搜索樹 (跳過)

62.不同路徑 62. 不同路徑 - 力扣&#xff08;LeetCode&#xff09; 本題大家掌握動態規劃的方法就可以。 數論方法 有點非主流&#xff0c;很難想到。 代碼隨想錄 視頻講解&#xff1a;動態規劃中如何初始化很重要&#xff01;| LeetCode&#xff1a;62.不同路徑_嗶哩嗶哩_b…

uniapp APP權限彈框

效果圖 第一步 新建一個頁面&#xff0c;設置透明 {"path": "pages/permissionDisc/permissionDisc","style": {"navigationBarTitleText": "","navigationStyle": "custom","app-plus": {&…

網絡安全證書培訓機構有哪些

一、前言少敘 記得剛入行的時候&#xff0c;想考一個證書來裝裝門面&#xff0c;結果發現費用太高了&#xff0c;比當時一個月的工資都高&#xff0c;感嘆網絡安全這幫人真舍得花錢&#xff0c;遂放棄。后來入職網絡安全公司&#xff0c;考了一個CISP&#xff0c;在工作中逐漸…

torch.argsorttorch.gather

文章目錄 1. 舉例說明2. pytorch 代碼 1. 舉例說明 torch.argsort 的作用是可以將矩陣中的元素進行從小到大排序&#xff0c;得到對應的序號。假設我們有一個向量a表示如下 a [ 8 , 7 , 6 , 9 , 7 ] \begin{equation} a[8,7,6,9,7] \end{equation} a[8,7,6,9,7]?? 那么從小…

JSON數據格式介紹

2.5 JSON 2.5.1.JSON格式的用途 在開發中凡是涉及到『跨平臺數據傳輸』&#xff0c;JSON格式一定是首選 2.5.2.JSON格式的說明 1.JSON數據兩端要么是{}&#xff0c;要么是[] {}定義JSON對象[]定義JSON數組 2.JSON對象的格式是&#xff1a;json {key:value,key:value,...,ke…

(性能測試)性能測試工具 2.jmeter的環境搭建 3jmeter元件和4使用實例 5jmeter元件和參數化

目錄 性能測試工具 性能測試工具 jemeter環境搭建 jmeter的常用目錄介紹 jmeter修改語言和主題--jmeter界面的漢化 jmeter元件 jmeter元件和組件的介紹 jmeter的作用域原則 jmeter的執行順序 案例&#xff1a;執行順序 jmeter使用案例 jmeter線程組的介紹 jmeter…

Qt程序基于共享內存讀寫CodeSys的變量

文章目錄 1.背景2.結構體從CodeSys導出后導入到C2.1.將結構體從CodeSys中導出2.2.將結構體從m4文件提取翻譯成c格式 3.添加RTTR注冊信息4.讀取PLC變量值5.更改PLC變量值6.Qt讀寫CodeSys的共享內存 1.背景 在文章【基于RTTR在C中實現結構體數據的多層級動態讀寫】中&#xff0c…

大模型架構全景解析:從Transformer到未來計算范式

1. Transformer 架構 核心模型 GPT-4、BERT、T5、LLaMA、通義千問、文心ERNIE 關鍵技術 多頭注意力&#xff1a;GPT-4 使用 96 頭注意力位置編碼創新&#xff1a;LLaMA 采用 RoPE&#xff08;旋轉位置編碼&#xff09;&#xff0c;Claude 3 引入 ALiBi歸一化優化&#xff1…

AI第一天 自我理解筆記--微調大模型

目錄 1. 確定目標&#xff1a;明確任務和數據 2. 選擇預訓練模型 3. 數據預處理 (1) 數據清洗與格式化 (2) 劃分數據集 (3) 數據加載與批處理 4. 構建微調模型架構 (1) 加載預訓練模型 (2) 修改模型尾部&#xff08;適配任務&#xff09; (3) 凍結部分層&#xff08;可…

計算機視覺——深入理解卷積神經網絡與使用卷積神經網絡創建圖像分類算法

引言 卷積神經網絡&#xff08;Convolutional Neural Networks&#xff0c;簡稱 CNNs&#xff09;是一種深度學習架構&#xff0c;專門用于處理具有網格結構的數據&#xff0c;如圖像、視頻等。它們在計算機視覺領域取得了巨大成功&#xff0c;成為圖像分類、目標檢測、圖像分…

[C++面試] 關于deque

一、入門 1、deque與vector的區別 deque的迭代器包含以下信息&#xff1a; 當前緩沖區指針&#xff08;current_buffer&#xff09;當前元素在緩沖區內的位置&#xff08;current&#xff09;中控器的位置&#xff08;map&#xff09; 每次移動迭代器時&#xff0c;需檢查是…

服務性能防腐體系:基于自動化壓測的熔斷機制

01# 背景 在系統架構的演進過程中&#xff0c;項目初始階段都會通過壓力測試構建安全護城河&#xff0c;此時的服務性能與資源水位保持著黃金比例關系。然而在業務高速發展時期&#xff0c;每個沖刺周期都被切割成以業務需求為單位的開發單元&#xff0c;壓力測試逐漸從必選項…

SpringBoot 和vue前后端配合開發網頁拼圖10關游戲源碼技術分享

今天分享一個 前后端結合 的網頁游戲 開發項目源碼技術。 這也是我第一次寫游戲類的程序&#xff0c;雖然不是特別復雜的游戲&#xff0c;但是是第一次寫&#xff0c;肯定要記錄一下了&#xff0c;哈哈。 游戲的內容 就是 我們顯示中玩的那個 拼圖碎片的 游戲&#xff0c;類似下…

【k8s002】k8s健康檢查與故障診斷

k8s健康檢查與故障診斷 ?一、集群狀態檢查? ?檢查節點健康狀態? kubectl get nodes -o wide # 查看節點狀態及基本信息 kubectl describe node <node-name> # 分析節點詳細事件&#xff08;如資源不足、網絡異常&#xff09; kubectl top nodes …

01-Canvas-使用fabric初始

fabric官網&#xff1a; https://fabric5.fabricjs.com/demos/ 創建畫布并繪制 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

【機器學習-基礎知識】統計和貝葉斯推斷

1. 概率論基本概念回顧 1. 概率分布 定義: 概率分布(Probability Distribution)指的是隨機變量所有可能取值及其對應概率的集合。它描述了一個隨機變量可能取的所有值以及每個值被取到的概率。 對于離散型隨機變量,使用概率質量函數來描述。對于連續型隨機變量,使用概率…