7.28 進制交換|迭代器模式|map|子集按位或|帶參遞歸

?

lc701.二叉搜索樹插入

void dfs不行

TreeNode* dfs,帶接受參數處理的dfs

當為空的時候,就可以添加插入

if (!root)

? ? ? ? ?{

? ? ? ? ? ? return new TreeNode(val);

? ? ? ? }

插入位置

root->left = insertIntoBST(root->left, val);

class Solution {

public:

? ? TreeNode* insertIntoBST(TreeNode* root, int val)?

? ? {

? ? ? ? // 若根節點為空,直接創建新節點作為根

? ? ? ? if (!root)

? ? ? ? ?{

? ? ? ? ? ? return new TreeNode(val);

? ? ? ? }

? ? ? ??

? ? ? ? // 根據值的大小決定插入左子樹還是右子樹

? ? ? ? if (val < root->val)?

? ? ? ? {

? ? ? ? ? ? root->left = insertIntoBST(root->left, val);

? ? ? ? }?

? ? ? ? else?

? ? ? ? {

? ? ? ? ? ? root->right = insertIntoBST(root->right, val);

? ? ? ? }

? ? ? ? return root;

? ? }

};

聯想:

有序合并兩個鏈表

l1->next=merge(l1->next,l2);

return l1;

?

lc61.鏈表分割點

class Solution {
public:
ListNode* rotateRight(ListNode* head, int k) {
if(!head || !head->next)
return head;


int n=0;
ListNode* tmp=head;
while(tmp)
{
n++;
tmp=tmp->next;
}

k=k%n;
if(k==0) return head;

ListNode* cy=head;
int flag=n-k;
int cnt=0;
ListNode* a;
ListNode* b;
while(head)
{
cnt++;

if(cnt==flag)
{
a=head;
b=head->next;
break;
}

head=head->next;
}

a->next=nullptr;
ListNode* newhead=b;

while(b->next)
{
b=b->next;
}
b->next=cy;

return newhead;
}
};

?

?

迭代器

對比于for循環

for循環一般是以特定順序循環,迭代器是以特定遍歷規則去訪問集合中每個元素,不嚴謹地來說,可以認為for的概念范圍比迭代器小,參考 迭代器模式 ?

不能用for循環遍歷一個 紅黑樹 ?或hash鏈表之類,迭代器是對所有可遍歷數據結構的抽象和封裝。


map

在C++中,?std::map?是有序集合,其內部通過紅黑樹實現,會按照鍵(key)的升序自動排序。

獲取?std::map?最后一個元素的方法:

- 使用?rbegin()?函數,它返回指向最后一個元素的反向迭代器,例如:?auto last = map.rbegin();?
- 通過?*last?可訪問該元素(鍵值對),通過?last->first?獲取鍵,?last->second?獲取值。

?

lc82.鏈表刪重

引入flag

return前處理:

newhead->next=nullptr; //截斷尾部可能的殘留


class Solution {
public:
ListNode* deleteDuplicates(ListNode* head)
{
if(!head || !head->next)
return head;

ListNode* newhead=new ListNode(0);
ListNode* ret=newhead;
int flag=-1000;

while(head)
{
if(head->next && head->val==head->next->val)
flag=head->val;

if(head->val!=flag)
{
newhead->next=head;
newhead=newhead->next;
}

head=head->next;
}


newhead->next=nullptr; //截斷尾部可能的殘留
return ret->next;
}
};

?


lc190 位運算

?class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t result = 0;
for (int i = 0; i < 32; ++i)
result = (result << 1) + (n >> i & 1);
return result;
}
};

lc2044.子集按位或

計算最大按位或的子集數量

class Solution {
public:
int countMaxOrSubsets(vector<int>& nums) {
int max_or = 0;
int count = 0;
int n = nums.size();

// 遍歷所有子集(共2^n個)
for (int mask = 1; mask < (1 << n); ++mask) {
int current_or = 0;
for (int i = 0; i < n; ++i) {

if (mask & (1 << i)) {
current_or |= nums[i];
}
}


// 更新最大或值和計數
if (current_or > max_or)

? ? ? ? ? {
max_or = current_or;
count = 1;
}

? ? ? ? ? ?else if (current_or == max_or)

? ? ? ? ? ?{
count++;
}
}
return count;
}
};


主要修改說明:

1.聚焦子集按位或計算
2.?使用位運算遍歷所有非空子集(掩碼?mask?從1開始,避免空集)
3.?計算每個子集的按位或值,追蹤最大值并統計出現次數
4.?時間復雜度O(n·2?),適用于n≤20的場景(題目隱含約束)

?

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

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

相關文章

方法學習(二)

.一、變量作為實參使用&#xff1a;1.定義一個方法&#xff0c;比較兩個整數的大小&#xff0c;如果第一個整數比第二個整數大&#xff0c;返回true否則返回false。public static void main(String[] args) {int i 3;int j 5;//傳遞的是i和j&#xff0c;但是真正傳遞的是i和j…

計算機視覺CS231n學習(1)

面向視覺識別的卷積神經網絡 CS231n Introduction計算機視覺的歷史 the history of computer vision 重要節點&#xff1a;1959 Hubel & Wiesel 利用和人比較相像的貓的視覺神經做實驗&#xff1a;簡單細胞反應燈的位置&#xff1b;復雜細胞反應燈的位置和移動&#xff1b;…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 微博內容IP地圖可視化分析實現

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解微博內容IP地圖可視化分析實現 視頻在線地…

Z20K118庫中寄存器及其庫函數封裝-SYSCTRL庫

1. 系統設備識別寄存器(SCM)7個位域。 記錄設備信息。Z20K11x[FAM_ID:Z20K/Z20M,SUBF_ID:1/3,SER_ID:1/4]特征ID版本號FLASH存儲器大小封裝類型。1-1 SYSCTRL_DeviceId_t SYSCTRL_GetDeviceId(void)讀取設備信息。2.獨一ID號寄存器&#xff08;SCM&#xff09;4個該寄存器存儲完…

007TG洞察:波場TRON上市觀察,Web3流量工具的技術解析與應用

引言&#xff1a;波場TRON&#xff08;TRX&#xff09;登陸資本市場及近期加密市場熱點&#xff08;如MEME幣&#xff09;&#xff0c;凸顯了實時流量捕獲與轉化在Web3領域的戰略地位。對于技術團隊而言&#xff0c;構建支撐全球業務的Web3平臺&#xff0c;核心挑戰在于&#x…

STM32——HAL 庫MDK工程創建

總&#xff1a;STM32——學習總綱 參考工程&#xff1a; 實驗0-3&#xff0c;新建工程實驗-HAL庫版本 前置知識&#xff1a; STM32——HAL庫 一、HAL 庫 MDK工程新建步驟簡介 例&#xff1a; 各個文件夾內容&#xff1a; 1.1 Drivers 1.2 Middlewares 1.3 Output 1.4 Pro…

【圖像處理】霍夫變換:霍夫變換原理、霍夫空間、霍夫直線、霍夫圓詳解與代碼示例

霍夫變換詳解與代碼示例 霍夫變換&#xff08;Hough Transform&#xff09;是一種用于檢測圖像中幾何形狀&#xff08;如直線、圓&#xff09;的特征提取技術。其核心思想是將圖像空間中的點映射到參數空間&#xff08;霍夫空間&#xff09;&#xff0c;通過累積投票機制識別形…

Java WEB技術-序列化和反序列化認識(SpringBoot的Jackson序列化行為?如何打破序列化過程的駝峰規則?如何解決學序列化循環引用問題?)

一、什么是序列化和反序列化 在java項目中&#xff0c;對象序列化和反序列化通常用于對象的存儲或網絡傳輸等。如&#xff1a;服務端創建一個JSON對象&#xff0c;對象如何在網絡中進行傳輸呢&#xff1f;我們知道網絡傳輸的數據通常都是字節流的形式&#xff0c;對象想要在網絡…

【生活系列】MBTI探索 16 種性格類型

博客目錄一、MBTI 的四個核心維度1. 精力來源&#xff1a;外向&#xff08;E&#xff09;vs 內向&#xff08;I&#xff09;2. 信息獲取方式&#xff1a;感覺&#xff08;S&#xff09;vs 直覺&#xff08;N&#xff09;3. 決策方式&#xff1a;思考&#xff08;T&#xff09;v…

innovus在ccopt_design時設置update io latency

我正在「拾陸樓」和朋友們討論有趣的話題,你?起來吧? 拾陸樓知識星球入口 往期文章:

電腦出現英文字母開不了機怎么辦 原因與修復方法

當您按下電腦開機鍵&#xff0c;屏幕上卻只顯示一串串陌生的英文字母&#xff0c;無法正常進入系統時&#xff0c;這通常是電腦在向您“求救”。這種情況可能由多種原因引起&#xff0c;從外部設備沖突到系統文件損壞&#xff0c;都可能導致電腦無法啟動。不必過于焦慮&#xf…

CSS和XPATH選擇器對比

1、優缺點比較特性CSS選擇器XPath語法復雜度簡潔易讀較為復雜性能通常更快可能較慢向上遍歷不支持支持&#xff08;可選擇父元素&#xff09;文本內容選擇有限支持完全支持索引選擇支持&#xff08;:nth-child&#xff09;支持&#xff08;position()&#xff09;瀏覽器兼容性優…

libomxil-bellagio移植到OpenHarmony

當使用mesa3dcangh提供的amd顯卡驅動時&#xff0c;想利用 Mesa 提供的圖形硬件加速能力&#xff0c;來支持視頻編解碼操作時。需要依賴libomxil-bellagio庫&#xff0c;現在成果分享如下&#xff1a; 基礎知識 1.OpenHarmony中mesa3d amd顯卡驅動編譯 2.OpenHarmony中基于G…

uvm-tlm-sockets

TLM 2.0引入了套接字(Socket)機制&#xff0c;實現發起方(initiator)與目標方(target)組件間的異步雙向數據傳輸。套接字與端口(port)和導出(export)同源&#xff0c;均繼承自uvm_port_base基類。發起事務的組件使用發起方套接字(initiator socket)&#xff0c;稱為發起方&…

AI 如何評價股票:三七互娛(SZ:002555),巨人網絡(SZ:002558)

三七互娛&#xff08;SZ:002555&#xff09;作為國內領先的游戲公司&#xff0c;其股票表現需結合財務健康度、行業地位、戰略布局及潛在風險綜合評估。以下從多維度展開分析&#xff1a; 一、財務表現&#xff1a;增長乏力與高分紅并存營收與利潤雙降 2025年Q1營收42.43億元&a…

Vibe Coding:AI驅動開發的安全暗礁與防護體系

當OpenAI聯合創始人Andrej Karpathy在2025年初的推文里首次提及"Vibe Coding"時&#xff0c;這個概念迅速在開發者社區引發共鳴——它描繪了一種誘人的開發模式&#xff1a;開發者用自然語言描述需求&#xff0c;AI接管代碼生成、修改甚至調試&#xff0c;整個過程以…

四、主輔源電路

一、主輔源結構主輔源采用反激變換器拓撲&#xff0c;輸入供電有母線供電、電池輔源供電、電網輔源供電。開關管為一個高耐壓NMOS功率管。主控芯片采用ICE3BS03LJG&#xff0c;其主要參數如下&#xff1a;商品目錄AC-DC控制器和穩壓器是否隔離隔離工作電壓10.5V~26V開關頻率65k…

制造業企業如何保障文件外發圖紙數據安全的?

在制造業的發展進程中&#xff0c;文件外發是必不可少的環節&#xff0c;但這也給圖紙數據安全帶來了諸多挑戰。一旦圖紙數據泄露&#xff0c;企業的核心競爭力可能會受到嚴重損害。那么&#xff0c;制造業企業該如何保障文件外發圖紙數據安全呢&#xff1f;建立完善的管理制度…

RAG:讓AI更聰明的“外接大腦“ | AI小知識

RAG&#xff1a;讓AI更聰明的"外接大腦" 什么是RAG&#xff1f; 想象你在參加知識競賽&#xff0c;突然遇到不會的題目。這時你掏出手機快速搜索正確答案——這就是RAG&#xff08;Retrieval-Augmented Generation&#xff0c;檢索式增強生成&#xff09;的工作原理。…

TCP 連接管理 之 三次握手詳解

TCP 連接管理 之 三次握手詳解 &#xff08;一&#xff09;TCP三次握手詳細過程及狀態變化 1. 第一次握手&#xff08;客戶端 → 服務器&#xff09; 報文標志位&#xff1a;SYN1&#xff08;同步序列號&#xff09;&#xff0c;ACK0&#xff08;首次握手無確認&#xff09;序列…