7.15 窗口函數 | 二分 | 位運算 | 字符串dp

lc3316. 字符串dp

dp多開一行一列后,注意原字符串下標映射

?

dp[n][m]?(?n?是source長度,?m?是pattern長度)

兩重循環填表

for i 1-n

? ?for j 0-m

?

三種狀態轉移

1.不選 dp i j=dp i-1 j

2.不選if tag, dp[i][j]++

3.if(s i==p j) 選,dp i j=max(dp i j, dp i-1 j-1)

從原字符串中挑選字符組成目標模式,同時盡可能多地刪除指定位置的字符,最終能刪多少個指定位置的字符。

?

具體邏輯拆解:

1.?前提設定:

- 有一個原字符串?source?和一個目標模式?pattern?

- 有一些指定位置?targetIndices?,刪除這些位置的字符會被計分

?

2.?核心目標:

- 要從原字符串中選出字符,按順序組成目標模式(字符順序不能亂)

- 同時盡量多刪?targetIndices?里的位置

- 最后返回最多能刪掉多少個指定位置的字符

?

3.?具體做法(用表格記錄狀態):

- 用一個表格?f[i][j]?表示:處理到原字符串第?i?個字符,已匹配到模式第?j?個字符時,最多能刪掉多少個指定位置

- 兩種選擇:

- 不選當前字符:直接跳過原字符串第?i?個字符,如果這個位置是指定位置,就加1分

- 選當前字符:如果當前字符和模式第?j?個字符相同,就用它來匹配,分數沿用之前的狀態

?

4.?最終結果:

- 處理完所有字符后,表格中?f[n][m]?的值就是答案(?n?是原字符串長度,?m?是模式長度)

?

舉個例子:

- 原字符串是"abcde",模式是"ace"

- 指定位置是[0,2](即第1個和第3個字符)

- 最優方案是選a、c、e組成模式,同時刪掉位置0和2的字符,最終得2分

?

class Solution {

public:

? ? int maxRemovals(string source, string pattern, vector<int>& targetIndices) {

? ? ? ? int n = source.size(), m = pattern.size();

? ? ? ? vector<bool> flag(n + 1, false);??

? ? ? ? for (int x : targetIndices)?

? ? ? ? ? ? flag[x + 1] = true;??

? ? ? ??

? ? ? ??

? ? ? ? const int INF = 1e9;

? ? ? ? vector<vector<int>> f(n + 1, vector<int>(m + 1, -INF));

? ? ? ? f[0][0] = 0; // 初始狀態:處理0個字符,匹配0個模式字符,刪除數為0

? ? ? ??

? ? ? ? for (int i = 1; i <= n; i++) {

? ? ? ? ? ? for (int j = 0; j <= m; j++) {

? ? ? ? ? ? ? ? // 轉移1:不使用source第i位,直接跳過

? ? ? ? ? ? ? ? f[i][j] = f[i - 1][j];

? ? ? ? ? ? ? ? if (flag[i]) { // 如果當前位置是指定刪除位,刪除數+1

? ? ? ? ? ? ? ? ? ? f[i][j]++;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? // 轉移2:使用source第i位匹配pattern第j位(若字符相同)

? ? ? ? ? ? ? ? if (j > 0 && source[i - 1] == pattern[j - 1]) {

? ? ? ? ? ? ? ? ? ? f[i][j] = max(f[i][j],f[i - 1][j - 1]);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? ??

? ? ? ? return f[n][m]; // 處理完所有字符且匹配完整個模式時的最大刪除數

? ? }

};

?

05.07

1.位運算

?

?

? ?2.位圖

class Solution {
public:
int exchangeBits(int num) {
bitset<33> bitNum(num);
for (int i = 0; i < 16; i++){
bitNum[32] = bitNum[2*i];
bitNum[2*i] = bitNum[2*i+1];
bitNum[2*i+1] = bitNum[32];
}
return (int)bitNum.to_ulong();
}
};

?

577.員工獎金

select e.name,b.bonus

from Employee e?
left join Bonus b on e.empId = b.empId
where b.bonus <1000 or b.bonus is null;

?

游戲查詢

select player_id,
min(event_date) as first_login
from Activity
group by player_id

?

lc1661

抽象后,計算查詢

select
machine_id,
round(2*avg(if(activity_type = 'start',-1,1)*timestamp),3) as processing_time
from
Activity
group by
machine_id

?

lcr069.二分

?

class Solution {
public:
int peakIndexInMountainArray(vector<int>& arr) {
int size = arr.size();
int left = 0;
int right = size - 1;
while(left <= right){
int mid = left + (right - left) / 2;
if(arr[mid] < arr[mid + 1]){
left = mid + 1;
}else{
right = mid - 1;
}
}
return left;
}
};

?

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

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

相關文章

Spring原理揭秘--初識AOP

我們知道軟件開發一直在追求高效&#xff0c;易維護&#xff0c;易擴展的特性方式。在面向過程編程到面向對象編程的歷程中&#xff0c;程序的開發有了非常大的進步。但是oop的方式缺依然存在著一些缺點。oop的方式可以將業務進行很好的分解和封裝使其模塊化&#xff0c;但是卻…

Provider模式:軟件架構中的“供應商“設計哲學

文章目錄Provider模式&#xff1a;軟件架構中的“供應商“設計哲學什么是Provider模式&#xff1f;經典應用場景1. 配置管理Provider2. 數據訪問Provider4. 消息隊列ProviderProvider模式的優勢1. 解耦合實際項目中的應用Provider模式的最佳實踐1. 命名約定2. 接口設計原則3. 錯…

LTspic下載,幫助及演示電路

1.下載 LTspice是一款強大高效的免費SPICE仿真器軟件、原理圖采集和波形觀測器&#xff0c;為改善模擬電路的仿真提供增強功能和模型。其原理圖捕獲圖形界面使您能夠探測原理圖并生成仿真結果&#xff0c;這些結果可以通過內置波形查看器進一步觀察分析。 鏈接&#xff1a; …

位置編碼/絕對位置編碼/相對位置編碼/Rope原理+公式詳細推導及代碼實現

文章目錄1. 位置編碼概述1.1 為什么需要位置編碼&#xff1f;2. 絕對位置編碼 (Absolute Position Encoding)2.1 原理2.2 數學公式2.3 代碼實現2.4 代碼與公式的對應關系2.5 特性與優勢2.6 可學習的絕對位置編碼3. 相對位置編碼 (Relative Position Encoding)3.1 原理3.2 數學公…

網絡安全初級第一次作業

一&#xff0c;docker搭建和掛載vpm 1.安裝 Docker apt-get install docker.io docker-compose 2.創建文件 mkdir /etc/docker.service.d vim /etc/docker.service.d/http-proxy.conf 3.改寫文件配置 [Service] Environment"HTTP_PROXYhttp://192.168.10.103:7890…

交換類排序的C語言實現

交換類排序包括冒泡排序和快速排序兩種。冒泡排序基本介紹冒泡排序是通過重復比較相鄰元素并交換位置實現排序。其核心思想是每一輪遍歷將未排序序列中的最大&#xff08;或最小&#xff09;元素"浮動"到正確位置&#xff0c;類似氣泡上升。基本過程是從序列起始位置…

嵌入式 Linux開發環境構建之Source Insight 的安裝和使用

目錄 一、Source Insight 的安裝 二、Source Insight 使用 一、Source Insight 的安裝 這個軟件是代碼編輯和查看軟件&#xff0c;打開開發板光盤軟件&#xff0c;然后右鍵選擇以管理員身份運行這個安裝包。在彈出來的安裝向導里面點擊 next &#xff0c;如下圖所示。這里選擇…

【字節跳動】數據挖掘面試題0016:解釋AUC的定義,它解決了什么問題,優缺點是什么,并說出工業界如何計算AUC。

文章大綱 AUC(Area Under the Curve)詳解一、定義:AUC是什么?二、解決了什么問題?三、優缺點分析四、工業界大規模計算AUC的方法1. 標準計算(小數據)2. 工業級大規模計算方案3.工業界最佳實踐4.工業界方案選型建議總結:AUC的本質AUC(Area Under the Curve)詳解 一、…

Python后端項目之:我為什么使用pdm+uv

在試用了一段時間的uv和pdm之后&#xff0c;上個月(2025.06)開始&#xff0c;逐步把用了幾年的poetry替換成了pdmuv&#xff08;pipx install pdm uv && pdm config use_uv true) ## 為什么poetry -> pdm: 1. 通過ssh連接到服務器并使用poetry shell激活虛擬環境之…

鴻蒙Next開發,配置Navigation的Route

1. 通過router_map.json配置文件進行 創建頁面配置router_map.json {"routerMap": [{"name": "StateExamplePage","pageSourceFile": "src/main/ets/pages/state/StateExamplePage.ets","buildFunction": "P…

在 GitHub 上創建私有倉庫

一、在 GitHub 上創建私有倉庫打開 GitHub官網 并登錄。點擊右上角的 “” → 選擇 “New repository”。填寫以下內容&#xff1a; Repository name&#xff1a;倉庫名稱&#xff0c;例如 my-private-repo。Description&#xff1a;可選&#xff0c;倉庫描述。Visibility&…

量產技巧之RK3588 Android12默認移除導航欄狀態欄?

本文介紹使用源碼編譯默認去掉導航欄/狀態欄方法,以觸覺智能EVB3588開發板演示&#xff0c;Android12系統&#xff0c;搭載了瑞芯微RK3588芯片&#xff0c;該開發板是核心板加底板設計&#xff0c;音視頻接口、通信接口等各類接口一應俱全&#xff0c;可幫助企業提高產品開發效…

Conda 安裝與配置詳解及常見問題解決

《Conda 安裝與配置詳解及常見問題解決》 安裝 Conda 有兩種主流方式&#xff0c;分別是安裝 Miniconda&#xff08;輕量級&#xff09;和 Anaconda&#xff08;包含常用數據科學包&#xff09;。下面為你詳細介紹安裝步驟和注意要點。 一、安裝 Miniconda&#xff08;推薦&a…

Linux ——lastb定時備份清理

lastb 命令顯示的是系統中 /var/log/btmp 文件中的SSH 登錄失敗記錄。你可以像處理 wtmp 那樣&#xff0c;對 btmp 文件進行備份與清理。? 一、備份 lastb 數據cp /var/log/btmp /var/log/btmp.backup.$(date %F)會保存為如 /var/log/btmp.backup.2025-07-14? 二、清空 lastb…

自定義類型 - 聯合體與枚舉(百度筆試題算法優化)

目錄一、聯合體1.1 聯合體類型的聲明1.2 聯合體的特點1.3 相同成員的結構體和聯合體對比1.4 聯合體大小的計算1.5 聯合練習二、枚舉類型2.1 枚舉類型的聲明2.2 枚舉類型的優點總結一、聯合體 1.1 聯合體類型的聲明 像結構體一樣&#xff0c;聯合體也是由一個或者多個成員構成…

FS820R08A6P2LB——英飛凌高性能IGBT模塊,驅動高效能源未來!

產品概述FS820R08A6P2LB 是英飛凌&#xff08;Infineon&#xff09;推出的一款高性能、高可靠性IGBT功率模塊&#xff0c;采用先進的EconoDUAL? 3封裝&#xff0c;專為大功率工業應用設計。該模塊集成了IGBT&#xff08;絕緣柵雙極型晶體管&#xff09;和二極管&#xff0c;適…

python學智能算法(十八)|SVM基礎概念-向量點積

引言 前序學習進程中&#xff0c;已經對向量的基礎定義有所了解&#xff0c;已經知曉了向量的值和方向向量的定義&#xff0c;學習鏈接如下&#xff1a; 向量的值和方向 在此基礎上&#xff0c;本文進一步學習向量點積。 向量點積 向量點積運算規則&#xff0c;我們在中學階…

【windows辦公小助手】比文檔編輯器更好用的Notepad++輕量編輯器

Notepad 中文版軟件下載&#xff1a;這個路徑總是顯示有百度無法下載&#xff0c;不推薦 更新&#xff1a;推薦下載路徑 https://github.com/notepad-plus-plus/notepad-plus-plus/releases 參考博主&#xff1a;Notepad的安裝與使用

2025年7月12日全國青少年信息素養大賽圖形化(Scratch)編程小學高年級組復賽真題+答案解析

2025年7月12日全國青少年信息素養大賽圖形化(Scratch)編程小學高年級組復賽真題+答案解析 選擇題 題目一 運行如圖所示的程序,舞臺上一共會出現多少只小貓呢?( ) A. 5 B. 6 C. 7 D. 8 正確答案: B 答案解析: 程序中“當綠旗被點擊”后,角色先移到指定位置,然后“重…

對于獨熱編碼余弦相似度結果為0和詞向量解決了詞之間相似性問題的理解

文章目錄深入理解簡單案例結論詞向量&#xff08;Word Embedding&#xff09;簡介詞向量如何解決相似性問題&#xff1f;簡單案例&#xff1a;基于上下文的詞向量訓練總結對于獨熱表示的向量&#xff0c;如果采用余弦相似度計算向量間的相似度&#xff0c;可以明顯的發現任意兩…