這題思路
我知道!
每日總結
經典題型
一、 i=i+2 與 i+=2 的區別:
簡單說就是i=i+2 比 i+=2多了一次對變數 i 的運算。i=i+2是先進行i+2的運算得出乙個結果,再賦值給i。i+=2就是先賦值然後在進行加法。
c語言中i +=2 等同於 i = i + 2 這是簡略寫法,但是計算時演算法不相同,i=i+2更容易得出i的賦值。例如:i=1,則i=i+2得到的結果是i=3,而i+=2得到的結果是i=1,運算得到的值不相同。
i=i+2運算效率最低,因為運算時讀取右i的位址i+1,讀取左i的位址;將右值傳給左邊的i(編譯器並不認為左右i的位址相同),而i+=2運算時讀取右i的位址,令i=1,將得到的值傳給i(因為i的位址已經讀出)
i = i + 2 和 i += 2都是和賦值相關的運算,賦值運算子除了=和+=外還包括-=,*=,/=,%=,&=,|=,^=,>>=<<=。其中=稱為簡單賦值,+=,-=,*=,/=,%=稱為復合算術賦值,&=,|=,^=,>>=,<<=稱為復合位運算賦值。
任何引用都必須指向乙個例項;
過載函式:這是同名函式的形式引數,(☞引數的個數、型別或者順序)必須不同,基函式的引數列表不同,同乙個運算子完成不同的運算功能,就是過載函式。
內聯函式(inline),不可以是虛函式;
派生類的虛函式與基類的虛函式具有不同的引數個數和型別;
派生類必須重新定義及基類的虛函式;
auto是c++程式語言的關鍵字。用於兩種情況(1)宣告變數時根據初始化表示式自動推斷該變數的型別(2)宣告函式時函式返回值的佔位符
先呼叫派生類的析構函式,再呼叫基類的析構函式。
乙個類的靜態成員:該類的靜態資料成員變數的值可以修改。
stl中的unordered_map和priority_queue使用的底層資料結構分別是:紅黑樹和heap。
乙個空類預設一定生成建構函式,拷貝建構函式,賦值操作符,引用操作符,析構函式
day1::
靜態成員可以在類體外進行初始化。
靜態成員是所有物件所共有的。
程式設計題組隊競賽:
**如下:
/*貪心演算法:每次選值都選當前能看到的區域性最優解!
*/#include#include#includeusing namespace std;
int main()
//排序,[0,n-1]的n個數做每組的左邊,剩餘兩個數為一組,大的數做最右邊的數,次大的數做中間值
std::sort(arr.begin(),arr.end());
for(int i=n;i<=3*n-2;i+=2)
cout<2.刪除公共字元:
**如下:
/*輸入兩個字串,從第一字串中刪除第二個字串中所有的字元。例如,輸入」they are students.」和」aeiou」,則刪除之後的第乙個字串變成」thy r stdnts.」
*/#include#includeusing namespace std;
int main();
for(int i=0;i3、找字串中連續最長的數字串
/*解題思路----找到字串中連續最長的數字
遍歷字串,使用cur去記錄連續的數字串,遇到不是數字就表示乙個連續的數字串結束了,
則將該數字串跟之前的數字串進行比較,如果更長,則更新更長的數字串到cur中
*/#include#includeusing namespace std;
int main()
else。由於數字2在陣列**現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。
解題思路:
如果有符合條件的數字,則它出現的次數比其他所有數字出現的次數和還要多。在遍歷陣列時儲存兩個值:
一是陣列中乙個數字,一是次數。遍歷下乙個數字時,若它與之前儲存的數字相同,則次數加1,否則次數減
1;若次數為0,則儲存下乙個數字,並將次數置為1。遍歷結束後,所儲存的數字即為所求。然後再判斷它
是否滿足條件。
··
¥¥¥¥
class solution
};/*
測試用例:功能測試(輸入的陣列中存在乙個出現次數超過陣列長度一半的數字;輸入的陣列中不存在乙個出現次數超過陣列長度一半的數字)
特殊輸入測試:(輸入的陣列中只有乙個數字:輸入nullptr指標)
*/
5、 倒置字串:將一句話的單詞進行倒置,標點不倒置。
比如 i like beijing.
經過函式後變為:beijing. like i
/*1、先將整個字串逆置過來,再遍歷字串,找出每個單詞,對單詞逆置。這裡我們使用了stl演算法中的
reverse,所以這裡使用迭代器遍歷string
2、第二思路是乙個比較討巧的思路,直接利用cin>>s接收輸入,遇到空格就結束了,自然就分割開了每個單
詞,其次將每次接收到的單詞拼接到之前串的前面就逆置過來了
*/方法一:
#include#include#includeusing namespace std;
/*int main()
cout<7、 統計回文數
/*暴力求解方式計算,遍歷str1,將str2插入到str1的每個位置,判斷是否構成回文數,若是就count++
每次使用str1拷貝構造乙個str,再進行插入。
*/#include#includeusing namespace std;
//判斷是否構成回文數
bool iscircletext(const string& s){
size_t begin=0;
size_t end =s.size()-1;
while(begin~未完待續!~
~還是太菜,仍需閉關修煉~
二叉樹題型彙總
題目描述 分別按照二叉樹先序,中序和後序列印所有的節點。輸入 返回 1,2,3 2,1,3 2,3,1 思路 建立返回vector,vector的0號元素放在左右子樹遍歷之前,vector1號元素放在左右子樹遍歷之間,vector2號元素放在左右子樹遍歷之後 class solution vecto...
杭電OJ刷題系列 二
目錄 2039.三角形 1720.a b coming 1062.text reverse 2104.hide handkerchief 1064.financial management 2734.quicksum 1170.balloon comes 1197.specialized four ...
C語言函式06 函式知識點 經典題型彙總 部分
1 以下關於函式敘述中,錯誤的是?a 函式未被呼叫時,系統將不為形參分配記憶體單元 b 實參與形參的個數必須相等,且實參與形參的型別必須對應一致 c 當形參是變數時,實參可以是常量 變數或表示式 d 如函式呼叫時,實參與形參都為變數,則這兩個變數不可能共享同一記憶體空間 答案 b 強制轉換問題 2 ...