7.17 滑動窗口 |assign |memo

?

lcp56. memo優化tle

或者改用bfs

class Solution {

? ? int m, n;

? ? int dx[4] = {0, 0, 1, -1};

? ? int dy[4] = {1, -1, 0, 0};

? ??

public:

? ? int conveyorBelt(vector<string>& matrix, vector<int>& start, vector<int>& end)?

? ? {

? ? ? ? int ret = INT_MAX;

? ? ? ? m = matrix.size();

? ? ? ? n = matrix[0].size();

? ? ? ? vector<vector<bool>> vis(m, vector<bool>(n, false));

? ? ? ? vis[start[0]][start[1]] = true;?

? ? ? ??

? ? ? ? function<void(int, int, int)> dfs = [&](int a, int b, int cnt)

? ? ? ? {

? ? ? ? ? ? if(cnt>=ret) return;

? ? ? ? ? ? if (a == end[0] && b == end[1])

? ? ? ? ? ? {

? ? ? ? ? ? ? ? ret = min(ret, cnt);

? ? ? ? ? ? ? ? return;

? ? ? ? ? ? }

? ? ? ? ? ??

? ? ? ? ? ? for (int k = 0; k < 4; k++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? int x = a + dx[k], y = b + dy[k];

? ? ? ? ? ? ? ? if (x >= 0 && y >= 0 && x < m && y < n && !vis[x][y])

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? int op = cnt;

? ? ? ? ? ? ? ? ? ? if (check(k) != matrix[a][b])?

? ? ? ? ? ? ? ? ? ? ? ? op++;

? ? ? ? ? ? ? ? ? ? vis[x][y] = true;

? ? ? ? ? ? ? ? ? ? dfs(x, y, op);

? ? ? ? ? ? ? ? ? ? vis[x][y] = false;?

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? };

? ? ? ??

? ? ? ? dfs(start[0], start[1], 0);?

? ? ? ??

? ? ? ? return ret;

? ? }

? ??

? ? char check(int k)

? ? {

? ? ? ? if (k == 0) return '>';

? ? ? ? if (k == 1) return '<';

? ? ? ? if (k == 2) return 'v';

? ? ? ? return '^';?

? ? }

};

?

lc3015.

法1:暴力bfs,數據范圍only 100,可以過

?

法2:加入了x,y,可以思考加入的x,y影響了什么呢? 通過數學找規律

class Solution {
public:
vector<int> countOfPairs(int n, int x, int y) {
vector<int> ret(n, 0);
for (int i = 1; i <= n; ++i) {
for (int j = i + 1; j <= n; ++j) {
// 計算三種可能路徑的最短距離
int direct = j - i;?
? int viaX = abs(i - x) + 1 + abs(j - y);?
int viaY = abs(i - y) + 1 + abs(j - x);?

int minDist = min({direct, viaX, viaY});
ret[minDist - 1] += 2;
}
}
return ret;
}
};

?

assign

assign? 是容器(比如 vector)的一個接口

作用:清空容器原來的內容,然后放入新的元素。

打個比方,就像你有一個盒子,?assign(n, false)? 就相當于:

  • - 先把盒子里原來的東西全倒掉
  • - 再往盒子里放 ?n? 個 ?false?

這樣能確保容器里的內容是全新的,不會有之前殘留的數據,避免出錯。

?

lc523.同余定理

兩個注意點

  • 同余定理:余數相同的兩個數,做差可被整除。--前綴和
  • hash存mod,不可以用set,因為要保證len大于等于2,所以要存idx映射

!!還有對于全選和全不選的兩個邊界,下標初始化處理

同余定理就是說:兩個整數 a 和 b,如果除以同一個正整數 m 后余數相同,就稱 a 和 b 對 m 同余,簡單記成 ?a ≡ b (mod m) ?,大白話就是“除以 m 剩得一樣” 。

比如 17 和 5 除以 6 都余 5,就說 17 和 5 對 6 同余 。則(17-5)%6=0,余數相同的兩個數,做差可被整除。

class Solution {
public:
bool checkSubarraySum(vector<int>& nums, int k)?
{
int n=nums.size();
vector<int> f(n+1,0);

for(int i=0;i<n;i++)
{
f[i+1]=f[i]+nums[i];
}
unordered_map<int,int> hash;
hash[0]=0;

for(int i=0;i<=n;i++)
{
int mod=f[i]%k;

if(hash.count(mod))
{
if(i-hash[mod]>=2)
return true;
}
else
hash[mod]=i;
}
return false;

}
};

?

lc1423.

滑動窗口?正難則反(用滑動窗口,就要轉化為連續部分才能滑~)

?

取兩邊最大->轉化為中間最小

喜提tle....

class Solution {
vector<int> card;
int n=0,k=0,ret=0;
public:
int maxScore(vector<int>& cardPoints, int k)?
{
card=cardPoints;
this->k=k;
n=cardPoints.size();
dfs(0,n-1,0,0);

return ret;
}

void dfs(int b,int e,int sum,int cnt)
{
if(cnt==k)?
{?
ret=max(ret,sum);
return;
}

dfs(b,e-1,sum+card[e],cnt+1);
dfs(b+1,e,sum+card[b],cnt+1);
}
};

滑動窗口,正難則反

class Solution {

public:

? ? int maxScore(vector<int>& cardPoints, int k) {

? ? ? ? int ret=INT_MAX,sum=0;

? ? ? ? int l=0,r=0;

? ? ? ? int n=cardPoints.size();

? ? ? ? int w=n-k;

? ? ? ? int tt=0;

? ? ? ??

? ? ? ? for(auto& c:cardPoints)

? ? ? ? ? ? tt+=c;

? ? ? ??

? ? ? ? while(r<n)

? ? ? ? {

? ? ? ? ? ? sum+=cardPoints[r];

? ? ? ? ? ? r++;

? ? ? ? ? ??

? ? ? ? ? ? if(r-l==w)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? ret=min(ret,sum);

? ? ? ? ? ? ? ? sum-=cardPoints[l];

? ? ? ? ? ? ? ? l++;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? int ans=tt-ret;

? ? ? ? if(ret==INT_MAX) ans=tt;

? ? ? ? return ans;

? ? }

};

?

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

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

相關文章

統計功效是什么?

統計功效的通俗理解可以把“統計功效”想象成偵探破案的能力——它代表統計檢驗&#xff08;偵探&#xff09;在犯罪事實確實存在&#xff08;真實效應存在&#xff09;時&#xff0c;成功發現真相&#xff08;檢測出效應&#xff09;的概率。核心比喻假設你是一個偵探&#xf…

大語言模型(LLM)訓練的教師強制(Teacher Forcing)方法

大語言模型&#xff08;LLM&#xff09;在訓練時使用一種名為“教師強制&#xff08;Teacher Forcing&#xff09;”的方法&#xff0c;而不是它們在推理&#xff08;生成文本&#xff09;時使用的“自回歸&#xff08;Autoregressive&#xff09;”方法 。闡明關于LLM訓練的一…

歸一化與激活函數:深度學習的雙引擎

歸一化和激活函數區別 歸一化和激活函數是深度學習中兩個不同但又存在關聯的技術,前者聚焦于“數據分布的調整”,后者聚焦于“引入非線性與輸出轉換”。 Softmax 既可以被視為一種歸一化操作,也屬于激活函數 因為它同時滿足兩者的核心特征,只是從不同角度定義:從“輸出…

C# --- 單例類錯誤初始化 + 沒有釋放資源導致線程泄漏

C# --- 單例類錯誤初始化 沒有釋放資源導致線程泄漏Background原因分析問題一&#xff1a; 錯誤初始化&#xff08;使用了箭頭函數&#xff09;問題一&#xff1a; 沒有Dispose資源Background 背景: service A的其中一個Api會向mq發送消息問題&#xff1a;線上發現這個服務經常…

MySQL基礎學習之DML,DQL(二)

這里寫目錄標題一、DML1、INSERT語句1)、給指定列添加數據2)、給全部列添加數據3)、批量數據添加數據4)、操作2、UPDATE語句3、DELETE語句二、DQL1、單表查詢1&#xff09;查詢語法2&#xff09;查詢全部3&#xff09;查詢部分4&#xff09;條件查詢5&#xff09;聚合函數6&…

在 Linux 系統中實現 Spring Boot 程序自動啟動的最佳實踐

在實際部署 Spring Boot 項目的生產環境中&#xff0c;如何確保服務自動啟動&#xff08;如開機自動運行、宕機自動恢復&#xff09;是一項基礎而關鍵的運維能力。本文將系統介紹如何在 Linux 中將 Spring Boot 應用注冊為 systemd 服務&#xff0c;實現進程守護與自動啟動。&a…

如何建立項目團隊的自驅力文化?

建立項目團隊的自驅力文化&#xff0c;關鍵在于賦權機制、目標共創、持續反饋、內在激勵、價值認同。 其中&#xff0c;“目標共創”尤其重要。項目成員若未參與目標制定&#xff0c;僅被動接受任務&#xff0c;將很難激發責任感和參與熱情。反之&#xff0c;通過共創目標&…

【React Native】布局文件-底部TabBar

布局文件-底部tabBar 內容配置 export default function Layout() {return (<Tabs />); }默認會將布局文件是將與它在同一個目錄的所有文件&#xff0c;包括下級目錄的文件&#xff0c;全都配置成Tab了。&#xff1a; 這樣做顯然不對&#xff0c;正確的做法是 在app目…

CompareFace使用

CompareFace 使用 CompareFace 有三種服務&#xff0c;分別是人臉識別&#xff08;RECOGNITION&#xff09;、人臉驗證&#xff08;VERIFICATION&#xff09;、人臉檢測&#xff08;DETECTION&#xff09;。 人臉識別其實就是人臉身份識別(每張照片只有一個人臉)&#xff0c;…

APP測試之Monkey壓力測試

&#xff08;一&#xff09;Monkey簡介 Monkey意指猴子&#xff0c;頑皮淘氣。所以Monkey測試&#xff0c;顧名思義也就像猴子一樣在軟件上亂敲按鍵&#xff0c;猴子什么都不懂&#xff0c;就愛搗亂。 Monkey 是 Android SDK 自帶的命令行工具&#xff0c;它通過向系統發送偽…

時序大模型為時序數據庫帶來的變革與機遇

時序數據&#xff08;Time Series Data&#xff09;作為記錄系統狀態隨時間變化的重要數據類型&#xff0c;在物聯網、金融交易、工業監控等領域呈爆炸式增長。傳統時序數據庫專注于高效存儲和查詢時序數據&#xff0c;而時序大模型&#xff08;Time Series Foundation Models&…

深入核心:理解Spring Boot的三大基石:起步依賴、自動配置與內嵌容器

深入核心&#xff1a;理解Spring Boot的三大基石&#xff1a;起步依賴、自動配置與內嵌容器 摘要&#xff1a;在上一章&#xff0c;我們領略了Spring Boot帶來的革命性開發體驗。但魔法的背后&#xff0c;必有其科學的支撐。本章將帶你深入Spring Boot的內核&#xff0c;系統性…

達夢數據庫配置兼容MySQL

前言 作為一名數據庫管理員或開發者&#xff0c;當項目需要從MySQL遷移到達夢數據庫時&#xff0c;最關心的莫過于兼容性問題。達夢作為國產數據庫的佼佼者&#xff0c;提供了良好的MySQL兼容模式&#xff0c;今天我就來分享一下如何配置達夢數據庫以實現對MySQL的兼容。 一、為…

js與vue基礎學習

vue創建項目 安裝node安裝node、npm、cnpm node -v npm -v #npm服務器位置處于國外&#xff0c;下載包的速度會比較緩慢。阿里為國內用戶提供的cnpm&#xff0c;他是npm的鏡像&#xff0c;下載第三方包時&#xff0c;們完全可以使用cnpm來替代npm。 cnpm -v在node中執行JavaScr…

【開源.NET】一個 .NET 開源美觀、靈活易用、功能強大的圖表庫

文章目錄一、項目介紹二、適用場景三、功能模塊四、功能特點五、效果展示六、開源地址一、項目介紹 LiveCharts2 是一個開源、簡單、靈活、交互式且功能強大的 .NET 圖表庫。LiveCharts2 現在幾乎可以在任何地方運行&#xff1a;Maui、Uno Platform、Blazor-wasm、WPF、WinFor…

使用Whistle自定義接口返回內容:Mock流式JSON數據全解析

一.mock接口返回數據流程 定位目標接口 在Whistle的Network面板中找到需要Mock的接口&#xff0c;右鍵點擊請求信息&#xff0c;選擇COPY -> URL復制完整URL&#xff0c;確保URL路徑精確到具體接口。準備Mock數據 點擊對應接口&#xff0c;在右側面板切換到response標簽頁&a…

【前端】富文本編輯器插件 wangEditor 5 基本使用(Vue2)

https://www.wangeditor.com/v5 一、安裝 首先安裝editor yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save安裝Vue2組件 yarn add wangeditor/editor-for-vue # 或者 npm install wangeditor/editor-for-vue --save或者Vue3 yarn add wangeditor/…

自適應哈希索引 和 日志緩沖區

目錄 1. 自適應哈希索引在內存中的位置 2. 自適應哈希索引的作用 3. 為什么要創建自適應哈希索引 4. 適應哈希索引的Key -Value如何設置&#xff1f; 5. 日志緩沖區在內存中的位置 6. 日志緩沖區的作用 7. 日志不通過LogBuffer直接寫入磁盤不行嗎&#xff1f; 1. 自適應哈…

中國旅行社協會在京召開“文旅人工智能應用研討會”,助力文旅創新發展

7月15日&#xff0c;由中國旅行社協會數字經濟專業委員會和在線旅行服務商分會聯合主辦的“人工智能技術在文旅產業中的應用”研討會在北京舉行。中國旅行社協會副會長、秘書長孫桂珍出席并致辭&#xff0c;中國工程院外籍院士、具身智能機器人專家張建偉、北京第二外國語學院旅…

Linux之Zabbix分布式監控篇(一)

一、概念和特點概念Zabbix是一款開源、免費的監控軟件 主要用于7*24*365實時監控網絡設置&#xff0c;操作系統&#xff0c;應用程序&#xff0c;網絡帶寬等資源的運行狀態&#xff0c;并且一旦發生異常能夠第一時間個SA管理員發送報警信息特點Zabbix是c/s結構&#xff0c;有c…