重構字符串(767)

767. 重構字符串 - 力扣(LeetCode)

解法:

class Solution {
public:string reorganizeString(string s){string res;//因為1 <= s.length <= 500 , uint64_t 類型足夠uint16_t n = s.size();if (n == 0) {return res;}unordered_map<char, uint16_t> m;for (auto c : s) {m[c] += 1;}vector<pair<char, uint16_t>> v(m.begin(), m.end());//構建最大堆auto compare_f = [](const pair<char, uint16_t> & i1,const pair<char, uint16_t> & i2){return i1.second < i2.second;};//按照key-value : letter-count,按照count構建最小堆priority_queue<pair<char, uint16_t>, std::vector<pair<char, uint16_t>>, decltype(compare_f)> q (v.begin(), v.end(), compare_f);auto & i = q.top();//如果一個letter,其counter大于一半以上,則肯定無法構建if ((((n & 1) == 1) && (i.second > n/2 + 1)) ||(((n & 1) == 0) && (i.second > n/2))){return  res;}//貪心法,每次從優先隊列里面取出count最大的元素while (!q.empty()) {auto  i = move(q.top());q.pop();if (res.size() > 0 && res.back() == i.first) {//如果letter相同,則再取出次多的auto j = move(q.top());q.pop();res += j.first;j.second -= 1;//如果letter count 大于0,則繼續插回隊列if (j.second > 0) {q.push(j);}}res += i.first;i.second -= 1;//如果letter count 大于0,則繼續插回隊列if (i.second > 0) {q.push(i);}}return res;}
};

總結:時間復雜度O(N2logN),空間復雜度O(N),應用到了最小堆、貪心算法。

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

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

相關文章

本地部署DeepSeek方法

本地部署完成后的效果如下圖&#xff0c;整體與chatgpt類似&#xff0c;只是模型在本地推理。 我們在本地部署主要使用兩個工具&#xff1a; ollamaopen-webui ollama是在本地管理和運行大模型的工具&#xff0c;可以直接在terminal里和大模型對話。open-webui是提供一個類…

游戲引擎 Unity - Unity 啟動(下載 Unity Editor、生成 Unity Personal Edition 許可證)

Unity Unity 首次發布于 2005 年&#xff0c;屬于 Unity Technologies Unity 使用的開發技術有&#xff1a;C# Unity 的適用平臺&#xff1a;PC、主機、移動設備、VR / AR、Web 等 Unity 的適用領域&#xff1a;開發中等畫質中小型項目 Unity 適合初學者或需要快速上手的開…

【開源免費】基于Vue和SpringBoot的公寓報修管理系統(附論文)

本文項目編號 T 186 &#xff0c;文末自助獲取源碼 \color{red}{T186&#xff0c;文末自助獲取源碼} T186&#xff0c;文末自助獲取源碼 目錄 一、系統介紹二、數據庫設計三、配套教程3.1 啟動教程3.2 講解視頻3.3 二次開發教程 四、功能截圖五、文案資料5.1 選題背景5.2 國內…

Haskell語言的多線程編程

Haskell語言的多線程編程 Haskell是一種基于函數式編程范式的編程語言&#xff0c;以其強大的類型系統和懶惰求值著稱。近年來&#xff0c;隨著多核處理器的發展&#xff0c;多線程編程變得日益重要。雖然Haskell最初并不是為了多線程而設計&#xff0c;但它的設計理念和工具集…

《蒼穹外賣》項目學習記錄-Day11訂單統計

根據起始時間和結束時間&#xff0c;先把begin放入集合中用while循環當begin不等于end的時候&#xff0c;讓begin加一天&#xff0c;這樣就把這個區間內的時間放到List集合。 查詢每天的訂單總數也就是查詢的時間段是大于當天的開始時間&#xff08;0點0分0秒&#xff09;小于…

【python】python油田數據分析與可視化(源碼+數據集)【獨一無二】

&#x1f449;博__主&#x1f448;&#xff1a;米碼收割機 &#x1f449;技__能&#x1f448;&#xff1a;C/Python語言 &#x1f449;專__注&#x1f448;&#xff1a;專注主流機器人、人工智能等相關領域的開發、測試技術。 【python】python油田數據分析與可視化&#xff08…

FBX SDK的使用:基礎知識

Windows環境配置 FBX SDK安裝后&#xff0c;目錄下有三個文件夾&#xff1a; include 頭文件lib 編譯的二進制庫&#xff0c;根據你項目的配置去包含相應的庫samples 官方使用案列 動態鏈接 libfbxsdk.dll, libfbxsdk.lib是動態庫&#xff0c;需要在配置屬性->C/C->預…

【單層神經網絡】基于MXNet庫簡化實現線性回歸

寫在前面 同最開始的兩篇文章 完整程序及注釋 導入使用的庫# 基本 from mxnet import autograd, nd, gluon # 模型、網絡 from mxnet.gluon import nn from mxnet import init # 學習 from mxnet.gluon import loss as gloss # 數據集 from mxnet.gluon…

【爬蟲】JS逆向解決某藥的商品價格加密

??????????歡迎來到我的博客?????????? ??作者:秋無之地 ??簡介:CSDN爬蟲、后端、大數據領域創作者。目前從事python爬蟲、后端和大數據等相關工作,主要擅長領域有:爬蟲、后端、大數據開發、數據分析等。 ??歡迎小伙伴們點贊????、收藏??、…

OpenAI開源戰略反思:中國力量推動AI產業變革

在周五的Reddit問答會上&#xff0c;OpenAI首席執行官Sam Altman罕見承認公司正面臨來自中國科技企業的強勁挑戰。這位向來強硬的硅谷領軍者坦言&#xff0c;以深度求索&#xff08;DeepSeek&#xff09;為代表的中國AI公司正在改寫行業游戲規則。 這場歷時三小時的對話揭示了…

一文講解HashMap線程安全相關問題(上)

HashMap不是線程安全的&#xff0c;主要有以下幾個問題&#xff1a; ①、多線程下擴容會死循環。JDK1.7 中的 HashMap 使用的是頭插法插入元素&#xff0c;在多線程的環境下&#xff0c;擴容的時候就有可能導致出現環形鏈表&#xff0c;造成死循環。 JDK 8 時已經修復了這個問…

android java系統彈窗的基礎模板

1、資源文件 app\src\main\res\layout下增加custom_pop_layout.xml 定義彈窗的控件資源。 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/…

python學習——常用的內置函數匯總

文章目錄 類型轉換函數數學函數常用的迭代器操作函數常用的其他內置函數 類型轉換函數 數學函數 常用的迭代器操作函數 實操&#xff1a; from cv2.gapi import descr_oflst [55, 42, 37, 2, 66, 23, 18, 99]# (1) 排序操作 asc_lst sorted(lst) # 升序 desc_lst sorted(l…

《解鎖AI黑科技:數據分類聚類與可視化》

在當今數字化時代&#xff0c;數據如潮水般涌來&#xff0c;如何從海量數據中提取有價值的信息&#xff0c;成為了眾多領域面臨的關鍵挑戰。人工智能&#xff08;AI&#xff09;技術的崛起&#xff0c;為解決這一難題提供了強大的工具。其中&#xff0c;能夠實現數據分類與聚類…

MySQL數據庫環境搭建

下載MySQL 官網&#xff1a;https://downloads.mysql.com/archives/installer/ 下載社區版就行了。 安裝流程 看b站大佬的視頻吧&#xff1a;https://www.bilibili.com/video/BV12q4y1477i/?spm_id_from333.337.search-card.all.click&vd_source37dfd298d2133f3e1f3e3c…

AI學習指南HuggingFace篇-Tokenizers 與文本處理

一、引言 在自然語言處理(NLP)中,文本數據的預處理是至關重要的一步。分詞器(Tokenizers)是將文本分割成單詞、短語或其他單元的工具,是文本處理的基礎。Hugging Face的Tokenizers庫提供了高效且靈活的分詞工具,支持多種預訓練模型的分詞需求。本文將深入講解Tokenizer…

如何用微信小程序寫春聯

? 生活沒有模板,只需心燈一盞。 如果笑能讓你釋然,那就開懷一笑;如果哭能讓你減壓,那就讓淚水流下來。如果沉默是金,那就不用解釋;如果放下能更好地前行,就別再扛著。 一、引入 Vant UI 1、通過 npm 安裝 npm i @vant/weapp -S --production?? 2、修改 app.json …

[SAP ABAP] 靜態斷點的使用

在 ABAP 編程環境中&#xff0c;靜態斷點通過關鍵字BREAK-POINT實現&#xff0c;當程序執行到這一語句時&#xff0c;會觸發調試器中斷程序的運行&#xff0c;允許開發人員檢查當前狀態并逐步跟蹤后續代碼邏輯 通常情況下&#xff0c;在代碼的關鍵位置插入靜態斷點可以幫助開發…

96,【4】 buuctf web [BJDCTF2020]EzPHP

進入靶場 查看源代碼 GFXEIM3YFZYGQ4A 一看就是編碼后的 1nD3x.php 訪問 得到源代碼 <?php // 高亮顯示當前 PHP 文件的源代碼&#xff0c;用于調試或展示代碼結構 highlight_file(__FILE__); // 關閉所有 PHP 錯誤報告&#xff0c;防止錯誤信息泄露可能的安全漏洞 erro…

基于深度學習的輸電線路缺陷檢測算法研究(論文+源碼)

輸電線路關鍵部件的缺陷檢測對于電網安全運行至關重要&#xff0c;傳統方法存在效率低、準確性不高等問題。本研究探討了利用深度學習技術進行輸電線路關鍵組件的缺陷檢測&#xff0c;目的是提升檢測的效率與準確度。選用了YOLOv8模型作為基礎&#xff0c;并通過加入CA注意力機…