leet code 筆記

好文章 :
整理leetcode刷題過程中遇到的常用庫(kù)函數(shù)(c++)
https://blog.csdn.net/i_choose_game/article/details/125585562

力扣刷題常用的c++庫(kù)函數(shù)
https://blog.csdn.net/weixin_45510561/article/details/125243585?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-125243585-blog-125585562.pc_relevant_3mothn_strategy_and_data_recovery&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-125243585-blog-125585562.pc_relevant_3mothn_strategy_and_data_recovery&utm_relevant_index=1

C++ 常用頭文件

#include <algorithm>    //通用算法

#include <deque>    //雙端隊(duì)列容器

#include <list>    //線性列表容器

#include <map>      //映射容器

#include <iostream>    //基本輸入輸出流

#include <queue>    //隊(duì)列容器

#include <set>    //集合容器

#include <stack>     //堆棧容器   

#include <string>    //字符串類

#include <vector>   //動(dòng)態(tài)數(shù)組容器

#include <hash_map> //字典(hash map)

#include <math>       //數(shù)學(xué)函數(shù)類

結(jié)構(gòu)體生成內(nèi)存申請(qǐng)

malloc與new,C++中的指針與引用术吝,C++struct與class的區(qū)別

  • new 不但分配對(duì)bai象空間, 還會(huì)在分配后調(diào)用對(duì)du象的構(gòu)造器, 而 malloc 只是分配zhi, 不構(gòu)
  • new 分配時(shí)要指定類型, 是類型安全的; 而 malloc 返回的是 void *, 類型不安全; 類型不安全的東西在 C++ 里是不被提倡的!
## malloc
ListNode* l = (struct ListNode *)malloc(sizeof(struct ListNode));
## new
ListNode* l = new ListNode(0);

std::vector<char> * 轉(zhuǎn)std::string 的三種方法

cp from https://www.iteye.com/blog/hulefei29-1974759

1.  std::vector<char> *data = response->getResponseData();  
2.  std::string res;  
3.  //way1  
4.  for (int i = 0;i<data->size();++i) {  
5.  res+=(*data)[i];  
6.  }  
7.  res+='\0';  
8.  std:cout << res;  


1.  std::vector<char> *data = response->getResponseData();  
2.  std::string res;  
3.  res.insert(res.begin(), data->begin(), data->end());  
4.  std::cout << res;  


1.  std::vector<char> *data = response->getResponseData();  
2.  std::string res;  
3.  const char* s = &(*data->begin());  
4.  res = std::string(s, data->size());  
5.  std::cout << res;

vector 排序

字母用數(shù)組替代hashmap

image.png

filter set 的使用

        set<string> filter_set;  // for filtering 
        for (auto & item : m_policy_ctx->input_items){
            if (filter_set.insert(item->feedid).second)
            {
                input_items_after_ranking.push_back(item);
            } 
        }

char數(shù)字轉(zhuǎn)int類型

例如把char a = ‘2’ 轉(zhuǎn)2 :int num = a-'0';

c++ 將一個(gè)char 轉(zhuǎn)化為string

https://blog.csdn.net/carbon06/article/details/79353821

image.png

string可以直接+=char

    string replaceSpace(string s) {
        string ans;
        for(int i = 0; i<s.size(); i++) {
            if(s[i] == ' ') {
                ans +="%20";
            }
            else    ans+=s[i];
        }
        return ans;
    }
class Solution {
public:
    string replaceSpace(string s) {
        std::string result;
        for (int i = 0; i < s.size(); i++) {
            if (s[i] == ' ') {
                result.append("%20");
            }
            else {
                result.push_back(s[i]);
            }
        }
        return result;
    }
};

C++ Set 基本使用

image.png

C++ map unordered_map 基本使用

image.png

刪除

刪除鍵為bfff指向的元素
 
cmap.erase("bfff");
 
 
刪除迭代器 key所指向的元素
map<string,int>::iterator key = cmap.find("mykey");
  if(key!=cmap.end())
 {
    cmap.erase(key);
 }
 
刪除所有元素

————————————————
版權(quán)聲明:本文為CSDN博主「「已注銷」」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議传藏,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明彤守。
原文鏈接:https://blog.csdn.net/zvall/article/details/52267007

C++ Vector 基本使用

C++ vector 刪除元素
vec.pop_back()

在vector中有三種涉及刪除的方法,第一種是vector::clear()具垫,第二種是vector::erase(),第三種是vector::pop_back()。clear用來清空整個(gè)vector抡草,同時(shí)將size變成0,無返回值燎含;erase通過傳入迭代器進(jìn)行刪除,既可以刪除單個(gè)元素屏箍,也可以刪除某一范圍的元素,刪除之后它將返回下一個(gè)位置的迭代器赴魁;pop_back用來刪除末尾元素,同時(shí)將size減1榄棵,無返回值潘拱。

一般來講erase用得比較多,不注意也容易踩坑芦岂,例如:

vector<int> vec{1, 4, 3, 2, 5, 2};
    
for(auto it = vec.begin(); it != vec.end(); it++){
    if(*it < 3){
        cout << "num is " << *it << endl;
        it = vec.erase(it);
        if(it == vec.end()) break;
    }
}

這個(gè)代碼如果不在for循環(huán)里加上最后的判斷會(huì)導(dǎo)致錯(cuò)誤禽最,原因在于,當(dāng)it指向最后一個(gè)2時(shí)弛随,滿足刪除條件,刪除后it變成了end栓票,然后又做了++操作愕够,導(dǎo)致越界。

類似的坑還有許多惑芭,這里就不一一列舉了,總之逃沿,它們的共同點(diǎn)在于對(duì)vector進(jìn)行刪除時(shí)都不夠優(yōu)雅幻锁,需要進(jìn)行一些額外的處理避免誤操作。
原文鏈接:https://blog.csdn.net/lishichengyan/java/article/details/82669153

正確代碼:

vector<int> vec{1, 4, 3, 2, 5, 2};
    
for(auto it = vec.begin(); it != vec.end();){
    if(*it < 3){
        cout << "num is " << *it << endl;
        it = vec.erase(it);
        
    }
    else {
      iter++;
    }
}
C++ vector 反轉(zhuǎn)
reverse(res.begin(),res.end());
C++ Vector 預(yù)分配大小
std::vector<int> nums(count);  // 預(yù)分配 count 個(gè)空間假消。

// 加上默認(rèn)賦值
std::vector<int> nums(count,default_num);

// 或者 
std::vector<int> nums;
nums.resize(5);

C++ 棧的使用

注意 pop()函數(shù)是沒有返回的岭接,需要先

auto val = stack1.top();
stack1.pop();
image.png

和其他序列容器相比臼予,stack 是一類存儲(chǔ)機(jī)制簡(jiǎn)單粘拾、所提供操作較少的容器谅阿。下面是 stack 容器可以提供的一套完整操作:
top():返回一個(gè)棧頂元素的引用,類型為 T&寓涨。如果棧為空,返回值未定義戒良。
push(const T& obj):可以將對(duì)象副本壓入棧頂冠摄。這是通過調(diào)用底層容器的 push_back() 函數(shù)完成的。
push(T&& obj):以移動(dòng)對(duì)象的方式將對(duì)象壓入棧頂沃呢。這是通過調(diào)用底層容器的有右值引用參數(shù)的 push_back() 函數(shù)完成的拆挥。
pop():彈出棧頂元素。
size():返回棧中元素的個(gè)數(shù)纸兔。
empty():在棧中沒有元素的情況下返回 true。
emplace():用傳入的參數(shù)調(diào)用構(gòu)造函數(shù)崎坊,在棧頂生成對(duì)象。
swap(stack<T> & other_stack):將當(dāng)前棧中的元素和參數(shù)中的元素交換奈揍。參數(shù)所包含元素的類型必須和當(dāng)前棧的相同赋续。對(duì)于 stack 對(duì)象有一個(gè)特例化的全局函數(shù) swap() 可以使用。

C++ 隊(duì)列(queue)的使用

入隊(duì)(push)
出隊(duì)(pop)
判斷隊(duì)列是否為空(empty)
統(tǒng)計(jì)隊(duì)列元素的個(gè)數(shù)(size)
訪問隊(duì)首元素(front)

C++ sort

sort(vec.begin(), vec.end());

C++ Vector直接賦值

vector<int> nums = {1,2};

C++ Vector 和 set 互相轉(zhuǎn)換

vector<int> v;
v = {1,2,2,3,3,4};//建立vector
set<int> st(v.begin(), v.end());//在構(gòu)造函數(shù)中可以直接實(shí)現(xiàn)vector轉(zhuǎn)set
v.assign(st.begin(), st.end());//用assign實(shí)現(xiàn)set轉(zhuǎn)vector

C++ 字符數(shù) stringstream 使用

#include <sstream>
#include <string>

    stringstream sstream;
    // 將多個(gè)字符串放入 sstream 中
    sstream << "first" << " " << "second";
    sstream << " third times";
    cout << "輸出字符串: " << sstream.str() << endl;
    // 清空 sstream
    sstream.str("");
    sstream << "one more time";
    cout << "清空字符串后,輸出為: " << sstream.str() << endl;

C++ 二維數(shù)組

見:https://blog.csdn.net/Ginny97/article/details/109248707

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末迫淹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子肺稀,更是在濱河造成了極大的恐慌,老刑警劉巖应民,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诲锹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡黄虱,警方通過查閱死者的電腦和手機(jī)庸诱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桥爽,“玉大人,你說我怎么就攤上這事盗扒⌒蔚迹” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵炫隶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我伪阶,道長(zhǎng)处嫌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任檐薯,我火速辦了婚禮,結(jié)果婚禮上坛缕,老公的妹妹穿的比我還像新娘。我一直安慰自己赚楚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布左胞。 她就那樣靜靜地躺著举户,像睡著了一般。 火紅的嫁衣襯著肌膚如雪敛摘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天屯远,我揣著相機(jī)與錄音捕虽,去河邊找鬼。 笑死泄私,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晌端。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼蓬痒,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了漆羔?” 一聲冷哼從身側(cè)響起梧奢,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤演痒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后鸟顺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹦锋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晕粪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渐裸。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖昏鹃,靈堂內(nèi)的尸體忽然破棺而出尚氛,到底是詐尸還是另有隱情,我是刑警寧澤洞渤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站载迄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏护昧。R本人自食惡果不足惜魂迄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捣炬。 院中可真熱鬧绽榛,春花似錦、人聲如沸推溃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽傀顾。三九已至襟铭,卻和暖如春寒砖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背魁兼。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漠嵌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓化撕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親约炎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子植阴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353