算法題(135):唯一的雪花

審題:

本題需要我們對于每一組數據都找出最大的包裹大小

思路:

本題解析題目意思后我們可以把雪花的編號當成數組中元素的值,把包裹看成一個區間。

本質上就是讓我們找出一組數據中,所有子段中最長的子段。

方法一:暴力解法

我們利用雙層for循環遍歷每一個子段,然后利用unordered_map來記錄子段區間的對應編號出現次數

不過這樣的話,由于內層的索引每次都要回到和外層索引一樣的位置,內層循環的遍歷次數就會比較多

方法二:滑動窗口(優化暴力解法)

簡單來說就是一種指針不回退的搜索方法

當我們搜索到一個編號的雪花出現了兩次的時候,我們就需要記錄區間長度,然后將區間范圍縮小,也就是left--。

此時我們的left可以移動到兩個區域

第一個是非法區域:也就是仍然有出現了兩次的編號在區間范圍內的區域

第二個是合法區域:也就是出現了兩次的編號已經有一個離開區間了的區域

若是非法區域,就算按照暴力解法將right回退也無法找到比當前更長的區間,所以沒有必要回退

若是合法區域,即使回退了也還是要指回當前right的索引位置,所以也沒有必要回退。

得出結論:無論如何right都不用回退

接下來我們看看滑動過程:

(1)初始狀態

(2)滑動

當區間中仍然存在出現兩次的編號,就不斷left--縮短區間(此時不用記錄長度,因為一定沒有之前沒縮短區間的時候長),直到合法為止,合法后即可記錄區間長度,然后right++繼續往后滑動。

解題:
?

#include<iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
const int N = 1e6 + 10;
unordered_map<int, int> m;
int t, n;
int a[N];
int maxsize;
int main()
{cin >> t;while (t--){//清空上一組殘留數據maxsize = 0;m.clear();//數據錄入cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];}//開始搜索int left = 1;for(int right = 1; right <= n; right++){++m[a[right]];while(m[a[right]] > 1)//繼續縮短區間{m[a[left]]--;left++;}maxsize = max(maxsize, right - left + 1);}cout << maxsize << endl;}return 0;
}

1.數組a是不用重置的,因為我們每一組數據都會重新錄入,且只訪問到n,不會訪問到殘留數據

2.unordered_map和unordered_set的清空都是使用clear

3.由于right索引位置也是屬于區間內的(區間左閉右閉),所以我們進行size計算的時候需要再加個1

UVA11572 唯一的雪花 Unique Snowflakes - 洛谷

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

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

相關文章

算法習題-力扣446周賽題解

算法可以調度思維&#xff0c;讓程序員的思維發散&#xff0c;找到更好的解決方案。 第一題&#xff1a;執行指令后的得分 題目&#xff1a; 給你兩個數組&#xff1a;instructions 和 values&#xff0c;數組的長度均為 n。你需要根據以下規則模擬一個過程&#xff1a; 從下標…

Ubuntu下MySQL的安裝

Ubuntu下MySQL的安裝 1. 查看當前操作系統版本2. 添加MySQL APT源2.1 訪問下載頁面&#xff0c;并下載發布包2.2 執行安裝指令2.3 安裝MySQL 3. 查看MySQL狀態4. 設置開機自啟動 1. 查看當前操作系統版本 通過命令lsb_release -a查看&#xff1a; 2. 添加MySQL APT源 2.1 訪問下…

航順 芯片 開發記錄 (一) 2025年4月27日19:23:32

芯片型號: HK32F030MF4P6 第一步:創建工程目錄 inc :頭文件目錄 MDK-ARM : 工程根目錄 (新建工程選擇該目錄) src :相關資源存放位置 官方函數庫相關內容 官方函數庫大致結構圖 ├─HK32F030MLib ├─CMSIS │ ├─CM0 │ │ └─Core │ │ arm_common_table…

Python 數據可視化進階:精準插入圖表到指定 Excel 工作表

Python 數據可視化進階&#xff1a;精準插入圖表到指定 Excel 工作表 在處理數據的過程中&#xff0c;我們常常需要將生成的圖表精準地插入到已存在數據的 Excel 文件的指定工作表中。借助 Python 的強大庫組合&#xff0c;這一操作得以高效實現。以下是經過優化和注釋補充的代…

集成方案 | Docusign + 甄零科技,賦能企業海外業務高效增長!

本文將詳細介紹 Docusign 與甄零科技的集成步驟及其效果&#xff0c;并通過實際應用場景來展示 Docusign 的強大集成能力&#xff0c;以證明 Docusign 集成功能的高效性和實用性。 甄零科技是一家專注于數字化合同管理系統的 SaaS 解決方案提供商&#xff0c;致力于為企業打造“…

00-算法打卡-目錄

1 數組 01-算法打卡-數組-二分查找-leetcode(704)-第一天-CSDN博客 02-算法打卡-數組-二分查找-leetcode(35)-第二天-CSDN博客 03-算法打卡-數組-二分查找-leetcode(34)-第三天_leetcode 34-CSDN博客 04-算法打卡-數組-二分查找-leetcode(69)-第四天-CSDN博客 05-算法打卡-數組…

劍指Offer(數據結構與算法面試題精講)C++版——day21

劍指Offer&#xff08;數據結構與算法面試題精講&#xff09;C版——day21 題目一&#xff1a;數據流的第k大數字題目二&#xff1a;出現頻率最高的k個數字題目三&#xff1a;和最小的k個數對附錄&#xff1a;源碼gitee倉庫 題目一&#xff1a;數據流的第k大數字 題目&#xff…

NCCL非阻塞non-blocking實現

NCCL (NVIDIA Collective Communications Library) 主要設計用于高性能的集體通信&#xff08;如all-reduce、broadcast等&#xff09;&#xff0c;但其核心函數默認是阻塞式的&#xff08;blocking&#xff09;&#xff0c;即函數返回時操作已完成。不過&#xff0c;你可以通過…

代碼隨想錄算法訓練營第60期第二十天打卡

大家好&#xff0c;今天我們繼續進入二叉樹的章節&#xff0c;二叉樹章節應該已經過半了&#xff0c;大家再堅持一下&#xff0c;那么廢話不多說&#xff0c;我們繼續今天的內容。 第一題對應力扣編號為235的二叉搜索樹的最近公共祖先 其實我們上次任務就接觸過了二叉樹的最近…

8.0 西門子PLC的S7通訊解析

PC與西門子PLC的S7通訊主要有如下幾個步驟: 1. TCP的三次握手(由Socket對象自動完成) 2.發送訪問請求:COTP 3. 交換通訊信息:setup Commnunication 一、發送訪問請求:COTP 比如向PLC請求+以及PLC返回響應的一個實際例子如下: 發送PLC:----> 03 00 00 16 11 E0 …

Nacos-SpringBoot 配置無法自動刷新問題排查

背景 Nacos SpringBoot版本中&#xff0c;提供了NacosValue注解&#xff0c;支持控制臺修改值時&#xff0c;自動刷新&#xff0c;但是今天遇見了無法自動刷新的問題。 環境 SpringBoot 2.2.x nacos-client&#xff1a;2.1.0 nacos-config-spring-boot-starter&#xff1a;0…

JAVA | 聚焦 OutOfMemoryError 異常

個人主頁 文章專欄 在正文開始前&#xff0c;我想多說幾句&#xff0c;也就是吐苦水吧…最近這段時間一直想寫點東西&#xff0c;停下來反思思考一下。 心中萬言&#xff0c;真正執筆時又不知先寫些什么。通常這個時候&#xff0c;我都會隨便寫寫&#xff0c;文風極像散文&…

基于開源技術體系的品牌賽道力重構:AI智能名片與S2B2C商城小程序源碼驅動的品類創新機制研究

摘要&#xff1a;在數字經濟與實體經濟深度融合的背景下&#xff0c;品牌競爭已從單一產品力競爭轉向生態化、技術化的賽道力競爭。本文以開源AI大模型、AI智能名片及S2B2C商城小程序源碼為核心技術載體&#xff0c;構建"技術賦能-場景貫通-生態協同"三維分析框架&am…

【vue3】購物車實戰:從狀態管理到用戶體驗的全流程實現

在電商項目中&#xff0c;購物車是核心功能之一&#xff0c;需要兼顧數據一致性、用戶體驗和邏輯復雜度。 本文結合 Vue3 Pinia 技術棧&#xff0c;詳細講解如何實現一個高效且易用的購物車系統&#xff0c;重點剖析 添加購物車 和 頭部購物車預覽 的核心邏輯與實現細節。 一…

卡洛詩西餐廳,以“中式西餐”為核心戰略

在餐飲市場的激烈競爭中&#xff0c;“本土化”是許多國際餐飲品牌難以跨越的鴻溝——要么因水土不服黯然退場&#xff0c;要么因過度妥協失去特色。然而&#xff0c;卡洛詩以“中式西餐”為核心戰略&#xff0c;將西餐與國內飲食文化深度融合&#xff0c;不僅破解了西餐本土化…

28-29【動手學深度學習】批量歸一化 + ResNet

1. 批量歸一化 1.1 原理 當神經網絡比較深的時候會發現&#xff1a;數據在下面&#xff0c;損失函數在上面&#xff0c;這樣會出現什么問題&#xff1f; 正向傳遞的時候&#xff0c;數據是從下往上一步一步往上傳遞反向傳遞的時候&#xff0c;數據是從上面往下傳遞&#xff0…

【Linux網絡】Http服務優化 - 增加請求后綴、狀態碼描述、重定向、自動跳轉及注冊多功能服務

&#x1f4e2;博客主頁&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客倉庫&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;歡迎點贊 &#x1f44d; 收藏 ?留言 &#x1f4dd; 如有錯誤敬請指正&#xff01; &…

AIGC(生成式AI)試用 32 -- AI做軟件程序測試 3

總結之前的AI做程序測試過程&#xff0c;試圖優化提問方式&#xff0c;整合完成的AI程序測試提問&#xff0c;探索更多可能的AI測試 AIGC&#xff08;生成式AI&#xff09;試用 30 -- AI做軟件程序測試 1 AIGC&#xff08;生成式AI&#xff09;試用 31 -- AI做軟件程序…

C語言實現迪杰斯特拉算法進行路徑規劃

使用C語言實現迪杰斯特拉算法進行路徑規劃 迪杰斯特拉算法是一種用于尋找加權圖中最短路徑的經典算法。它特別適合用于計算從一個起點到其他所有節點的最短路徑&#xff0c;前提是圖中的邊權重為非負數。 一、迪杰斯特拉算法的基本原理 迪杰斯特拉算法的核心思想是“貪心法”…

引領印尼 Web3 變革:Mandala Chain 如何助力 1 億用戶邁向數字未來?

當前 Web3 的發展正處于關鍵轉折點&#xff0c;行業亟需吸引新用戶以推動 Web3 的真正大規模采用。然而&#xff0c;大規模采用面臨著核心挑戰&#xff1a;數據泄露風險、集中存儲的安全漏洞、跨系統互操作性障礙&#xff0c;以及低效的服務訪問等問題。如何才能真正突破這些瓶…