區間和數量統計 之 前綴和+哈希表

文章目錄

  • 1512.好數對的數目
  • 2845.統計趣味子數組的數目
  • 1371.每個元音包含偶數次的最長子字符串

  • 區間和的數量統計是一類十分典型的問題:記錄左邊,枚舉右邊策略
  • 前置題目:統計nums[j]==nums[i]的對數
  • 進階版本:統計子數組和%modulo == k的子數組的數目
  • 為什么要使用到這個哈希表
  • 答:對于有限狀態的數量的存儲,并且對于數量的統計,需要初始化store[0]=1,當然對于長度的統計,那么初始化的情況就是store[0] = -1(存儲的是下標)
  • 為什么要使用到這個前綴和
  • 答:方便計算這個區間的和的情況,我們所使用的前綴和,就是通過兩個前綴的狀態的差求解出中間狀態的情況!!!!

1512.好數對的數目

1512.好數對的數目

在這里插入圖片描述

  • 典型的哈希表問題,先更新答案,再更新哈希表
from collections import defaultdict
class Solution:def numIdenticalPairs(self, nums: List[int]) -> int:n = len(nums)store = defaultdict(int)ans = 0for i in range(n):ans += store[nums[i]]store[nums[i]] += 1return ans

2845.統計趣味子數組的數目

2845.統計趣味子數組的數目

在這里插入圖片描述

  • 子數組區間和取模的問題,還是采用記錄左邊,枚舉右邊策略
  • 不過就是要注意,我們其實是只用枚舉(前綴和-k)%modulo的數是否在左邊出現,更新的時候是前綴和%modulo的數量+1
from collections import defaultdict
class Solution:def countInterestingSubarrays(self, nums: List[int], modulo: int, k: int) -> int:n = len(nums)# 預處理,將滿足的位置變為1,否則就是0 for i in range(n):if nums[i] % modulo == k:nums[i] = 1else:nums[i] = 0 # 哈希表存儲,k == 0 的情況得另外處理,當k!=0的時候,就是一個哈希表+前綴和的問題store = defaultdict(int)# 記錄的是對應的取模的結果的最早的下標# 區間和取模問題store[0] = 1tmp,ans = 0,0for i in range(n):tmp = tmp + nums[i]if tmp >= k:ans += store[(tmp - k) % modulo]store[tmp  % modulo ] += 1return ans

思考

  • 如果題目求解的是子數組的和是modulo的倍數的子數組個數,應該如何求解?
  • 答:那其實就更加簡單了,我們只需記錄nums[i]%modulo的結果在左邊的數量即可,不過要注意初始化的時候得store[0] = 1

1371.每個元音包含偶數次的最長子字符串

1371.每個元音包含偶數次的最長子字符串

在這里插入圖片描述

  • 哈希表存儲的是下標,所以初始化的時候注意得是store[0]=-1
  • 我們只需關注這個字符串中元音的個數的情況,當然,由于兩個前綴相同的狀態的差的字符串中元音的個數肯定是偶數,所以我們采用前綴和來求解出字符串中元音的個數的狀態,由于涉及到奇數偶數,所以采用異或運算
class Solution:def findTheLongestSubstring(self, s: str) -> int:n = len(s)mapper = {"a" : 1,"e" : 2,"i" : 4,"o" : 8,"u" : 16}# 使用哈希表存儲異或結果出現的第一次的下標seen = {0:-1}# 記錄結果ans = cur = 0for i in range(n):if s[i] in mapper:cur ^= mapper[s[i]]# 判斷當前的cur是否是第一次出現if cur in seen:ans = max(ans,i-seen[cur])else:seen[cur] = ireturn ans

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

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

相關文章

PCB 制造流程分步指南

最近的一次PCB打板經歷,板廠工程人員告知絲印偏到焊盤上了,內部讓我評估是否可以繼續貼片。 于是發一期文章,介紹一下PCB制造流程。 PCB制造工藝 PCB設計獲得批準且制造商收到最終制造文件后,PCB制造或生產就開始了。此時&…

python實現簡單的UI交互

文章目錄 1. 基礎打印 覆蓋同一行2. 多行動畫效果3. 彩色文本(Windows/macOS/Linux)4. 輸入交互5. 異步輸入與非阻塞顯示6. 高級控制臺 UI 庫 可以通過控制臺打印實現簡單的「偽UI交互」,尤其適合展示進度、動態文本或輕量級狀態反饋。以下是…

AI與思維模型【77】——PDCA思維模型

一、定義 PDCA思維模型是一種用于持續改進和優化工作流程、項目實施以及問題解決的科學管理方法。它由四個英文字母組成,分別代表計劃(Plan)、執行(Do)、檢查(Check)和處理(Act&…

10天學會嵌入式技術之51單片機-day-3

第九章 獨立按鍵 按鍵的作用相當于一個開關,按下時接通(或斷開),松開后斷開(或接通)。實物圖、原理圖、封裝 9.2 需求描述 通過 SW1、SW2、SW3、SW4 四個獨立按鍵分別控制 LED1、LED2、LED3、LED4 的亮…

vite+vue2+elementui構建之 package.json

webpack版本太低,構建依賴太多,頭大。 各種查閱資料,弄了一份直通構建vite構建elementUi核心文件, 構建基于開源若依vue2vue3版本改造,感謝開源,感謝若依。 vitevue2elementui構建之 vite.config.js-CSD…

提升變電站運維效率:安科瑞無線測溫系統創新應用

一、引言 變電站作為電力系統的關鍵樞紐,承擔著變換電壓、分配電能以及控制電力流向等重要任務。在變電站的運行過程中,電氣設備的接點溫度監測至關重要。過熱問題可能由多種因素引發,如電阻過大、接頭質量欠佳、銜接不緊密、物理老化等&…

DMA的三種傳輸功能

①內存到內存 #include "dma.h" #include "stdio.h"#define BUF_SIZE 16uint32_t src_buf[BUF_SIZE] {0x00000000,0x11111111,0x22222222,0x33333333,0x44444444,0x55555555,0x66666666,0x77777777,0x88888888,0x99999999,0xAAAAAAAA,0xBBBBBBBB,0xCCCCCCC…

【MySQL】MySQL 表的增刪改查(CRUD)—— 下篇(內含聚合查詢、group by和having子句、聯合查詢、插入查詢結果)

目錄 1. 插入查詢結果 2 聚合查詢 (行與行之間運算) count 計算查詢結果的行數 sum 求和 avg 求平均值 max 最大值 min 最小值 【小結】 3. group by 子句 分組 where 條件 having 條件 4. 聯合查詢(多表查詢) 內連接…

“思考更長時間”而非“模型更大”是提升模型在復雜軟件工程任務中表現的有效途徑 | 學術研究系列

作者:明巍/臨城/水德 還在為部署動輒數百 GB 顯存的龐大模型而煩惱嗎?還在擔心私有代碼庫的安全和成本問題嗎?通義靈碼團隊最新研究《Thinking Longer, Not Larger: Enhancing Software Engineering Agents via Scaling Test-Time Compute》…

電腦屏幕錄制軟件Captura源碼編譯(Win10,VS2022)

屏幕錄像的意義: 教育教學方面 制作教學資源:教師可以通過錄制屏幕來制作教學視頻,演示軟件操作、講解復雜的知識點等。學生可以隨時觀看這些視頻,便于復習和鞏固知識,尤其對于一些抽象的概念或難以在課堂上一次性掌握…

記一次調用大華抓拍SDK并發優化

目錄 一、問題分析 二、解決思路 三、貼代碼 四、總結 一、問題分析 按慣例上問題: 設備告警采用高電平持續模式:一次開,不主動關就一直處于告警狀態。 并發時多個請求下發 setDVRAlarmOutConfig,導致狀態混亂。 “開 -&g…

Python圖像變清晰與銳化,調整對比度,高斯濾波除躁,卷積銳化,中值濾波鈍化,神經網絡變清晰

本次使用圖片來源于百度 import cv2 import time import numpy as np import pywtfrom PIL import Image, ImageEnhance#-i https://pypi.mirrors.ustc.edu.cn/simpledef super_resolution(input_path, output_path, model_path, scale4):# 初始化超分辨率模型sr cv2.dnn_su…

12個HPC教程匯總!從入門到實戰,覆蓋分子模擬/材料計算/生物信息分析等多個領域

在科學研究、工程仿真、人工智能和大數據分析等領域,高性能計算 (High Performance Computing, HPC) 正扮演著越來越重要的角色。它通過并行處理、大規模計算資源的整合,極大提升了計算效率,使原本耗時數日的任務能夠在數小時內完成。 隨著計…

使用Autocannon.js進行HTTP壓測

目錄 一、為什么選擇Autocannon? 二、五分鐘快速上手 1. 環境準備 2. 發起首個壓測 3. 解讀測試報告 三、高階場景實戰 場景1:POST請求壓測 場景2:階梯式壓力測試 場景3:編程式集成測試 四、結果深度分析指南 1. 延遲分…

pnpm install報錯:此系統上禁止運行腳本

依賴安裝 報錯信息: pnpm : 無法加載文件 C:\Users\XXX\AppData\Roaming\npm\pnpm.ps1,因為在此系統上禁止運行腳本。有關詳細信息,請參閱 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1 …

第9章 多模態大語言模型

??????第1章 對大型語言模型的介紹第2章 分詞和嵌入第3章 解析大型語言模型的內部機制第4章 文本分類第5章 文本聚類與主題建模第6章 提示工程第7章 高級文本生成技術與工具第8章 語義搜索與檢索增強生成第10章 構建文本嵌入模型第11章 面向分類任務的表示模型微調第12章…

Python 繪圖代碼解析:用 Turtle 和 Colorsys 打造絢麗圖案

注:本文為作者原創文章,未經許可禁止轉載。 Python 繪圖代碼解析:用 Turtle 和 Colorsys 打造絢麗圖案 在 Python 的世界里,有許多有趣的庫可以用來創造精美的圖形。今天,我們就來詳細剖析一段使用turtle庫和colorsys庫的代碼,看看它是如何繪制出獨特圖案的。 一、庫的導…

RTMP 入門指南

1. RTMP 基礎概念?? ??核心角色??: ??推流端(Publisher)??:將音視頻數據推送到服務器的設備(如OBS、手機APP)。??服務器(RTMP Server)??:接收推流并分發給…

Java Stream流 常用方法

Map 修改 用于修改集合里的值 public void findData(){ArrayList<String> list new ArrayList<>();list.add("張三");list.add("李四");List<String> collect list.stream().map(s -> s "a").collect(Collectors.toLi…

巧記英語四級單詞 Unit5-上【曉艷老師版】

count 數&#xff0c; counter n.計算器&#xff0c;柜臺 a.相反的 數數的東西就是計算器&#xff0c;在哪數&#xff0c;在柜臺里面數&#xff1b;你和售貨員的關系就是相反的(一個買貨&#xff0c;一個賣貨account n.賬戶&#xff0c;賬號 一再的數accountant n.會計 一再的…