PAT 刷題遇到的tips

2021-09-28 16:13:38 字數 1891 閱讀 6831

stl的max函式

max_element()及min_element()函式,二者返回的都是迭代器或指標。

標頭檔案:#include algorithm

1.求陣列的最大值或最小值

1)vector容器

例 vector vec

最大值:int maxvalue = *max_element(v.begin(),v.end());

最小值:int minvalue = *min_element(v.begin(),v.end());

2)普通陣列

例 a=;

最大值:int maxvalue = *max_element(a,a+6);

最小值:int minvalue = *min_element(a,a+6);

2.求陣列最大值最小值對應的下標

1)vector容器

例 vector vec

最大值下標:int maxposition = max_element(v.begin(),v.end()) - v.begin();

最小值下標:int minposition = min_element(v.begin(),v.end()) - v.begin();

2)普通陣列

例 a=;

最大值下標:int maxposition = max_element(a,a+6) - a;

最小值下標:int minposition = min_element(a,a+6) - a;

注意:返回的是第乙個最大(小)元素的位置。

stl–sort

sort(first_pointer,first_pointer+n,cmp)

引數解釋: 第乙個引數是陣列的首位址,一般寫上陣列名就可以,因為陣列名是乙個指標常量。第二個引數相對較好理解,即首位址加上陣列的長度n(代表尾位址的下一位址)。最後乙個引數是比較函式的名稱(自定義函式cmp),這個比較函式可以不寫,即第三個引數可以預設,這樣sort會預設按陣列公升序排序。

簡單例子:對陣列a的0~n-1元素進行公升序排序,只要寫sort(a,a+n)即可;

對於向量v也一樣,sort(v.begin(),v.end())即可。

bool myfunction (int i,int j) //降序排列

利用stringstream

新增標頭檔案 #include

數字轉字串

#include #include int main()
字串轉數字

#include #include int main()
數字字元轉換為數字:

1)最簡單的是讓數字字元去減『0』得到的就是數字的值。

示例如下:

char c=『0』; //'1','2','3',.....'9'

int num=0;

num = int(c - '0');

數字轉換為數字字元

和數字字元轉數字相反 我們可以加上 『0』的ascii 就可以變為char型別

int a=1;

char c=a+『0』; //c的值就是』1』的ascii碼值

PAT甲級刷題

給定兩個字串s1和s2,刪除s1中在s2 現過的字元設定flag陣列,初始化為0。遍歷s2並將其字元轉化為ascii碼值,並在flag陣列中相應位置值標記為1,表示它出現過。再遍歷s1,若對應字元ascii碼值在flag陣列中相應位置值標記為0,則輸出。就是hash的思想,時間複雜度o len s1...

PAT刷題日誌

調整刷題策略 集中精力刷 演算法筆記 第四章的題目,夯實基礎。基礎實在太差,第八章之後的題目壓根就不會,做題的時候就是抄一遍 理解一遍 根本不能算作刷題,而是被題刷。之前乙個知識點一道題的方法根本就是走馬觀花,蜻蜓點水,抄一遍 就覺得會了,第二天就忘乾淨了 兩個字來形容 浮躁 十多天的時間裡參加了倆...

pat 刷題記錄 pat 乙級 刷題 1002

讀入乙個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10 100 在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後乙個拼音數字後沒有空格。123456789098765432...