劍指offer第二十八題

2021-09-26 10:19:34 字數 844 閱讀 7146

題目描述

陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列**現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。

思路:

看到這個題目,我腦子裡第乙個蹦出來的思路是用樹來解決,因為這個題目是要記錄鍵對應的值,記錄完了過後再去查詢鍵對應的值。而現成的樹就是stl裡基於紅黑樹構建的map容器了。map容器插入,查詢,刪除的時間複雜度都是o(logn),很適合該題,**如下:

class solution 

for (auto iter : m)

return 0;

}};

這裡補充一下map的操作:

(1)map的建立與插入

mapm;

m["a"]=1;

m["b"]=2;

(2)map遍歷操作操作

for(auto iter:m)

{ cout<<"map的鍵 "<(3)map的查詢操作

要查詢某個鍵對應的值是多少,find()函式,搜尋到了的話返回迭代器的位置,搜尋不到返回end()位置

map::iterator it;

it=m.find("a");

coutmap::iterator it;

it=m.find("a");

m.erase(it);

或者m.erase("a");

或者m.erase(m.begin());//刪除第乙個值

(5)map裡的數是按照鍵的大小排列好的

《劍指offer》第二十八題(對稱的二叉樹)

面試題28 對稱的二叉樹 題目 請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和 它的映象一樣,那麼它是對稱的。include include binarytree.h bool issymmetrical binarytreenode proot1,binarytreenode p...

第二十八天

1 建立乙個名稱為itcast的資料庫。create database itcast 2 設計資料表tb student的字段結構,欄位有id 學號 name 姓名 age 年齡 enrolmentdate 入學時間 並選擇適合的資料型別。tb student資料表的字段結構如下表所示 欄位名 型別...

蛻變,第二十八天

1 什麼是包 包是模組的一種形式,包的本質就是乙個含有 init py檔案的資料夾 2.為什麼要有包 因為如果我們要把我們寫的一大堆功能分類處理,並且數量眾多,我們需要進行分檔案儲存,則需要用到包的概念 3 如何用包 匯入包就是在包下的 init py import from import 注意的問...