刷題筆記 2020 08 06

2021-10-08 21:57:17 字數 1352 閱讀 1669

請實現乙個函式用來找出字元流中第乙個只出現一次的字元。例如,當從字元流中只讀出前兩個字元"go"時,第乙個只出現一次的字元是"g"。當從該字元流中讀出前六個字元「google"時,第乙個只出現一次的字元是"l"。如果當前字元流沒有存在出現一次的字元,返回#字元。

分析:使用unordered_map(底層實現是hash,查詢效率 o(1))和佇列(之前已經進入佇列的字元就不必再進入佇列了)。

class

solution

char()

};

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為; 針對陣列的滑動視窗有以下6個: , , , , , 。 視窗大於陣列長度的時候,返回空。

分析:怎麼能想到用單調佇列呢?

class

solution

}return vec;}}

;

給定乙個陣列a[0,1,…,n-1],請構建乙個陣列b[0,1,…,n-1],其中b中的元素b[i]=a[0] * a[1] * …* a[i-1] * a[i+1] *…*a[n-1]。不能使用除法。(注意:規定b[0] = a[1] * a[2] * … * a[n-1],b[n-1] = a[0] * a[1] * … * a[n-2];)。對於a長度為1的情況,b無意義,故而無法構建,因此該情況不會存在。

分析:分別構建乘積的左部分和右部分。

class

solution

return b;}}

;

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5。

分析:設定 pre、cur 指標。測試 cur 結點與下一結點是否重複,如果重複就不斷更新 cur,使 cur 指向下一節點,直到 cur 結點與下一節點不再相等,此時使 pre 的 next 指標指向 cur 的下一節點,最後更新 cur。如果 cur 結點與其下一結點不重複,就同時更新 pre 和 cur 指標,使他們指向他們的下一節點。

/*

struct listnode

};*/

class

solution

if(flag) pre-

>next = cur-

>next;

else pre =cur;

cur = cur-

>next;

}return prehead-

>next;}}

;

2020 08 06 比刷題還難的事兒

若有大佬說,刷題算什麼,那請大佬借我一些悟性,然後出門右轉,在下贈一句走好不送。對於乙個0 0.25調子程式設計師,我都不知道什麼給自己的勇氣竟然今天腦子抽了決定開始刷題。與其是說刷題,不如說想在有生之年見一見山頂的樣子,或許雲海日出並沒有夢中那般絕世美豔,但也許從今天我便開始鬥起膽子,做下這個美夢...

刷題筆記 Binary watch

include include include using namespace std class solution m count push back i for int i 0 i num i vector a n,n 5 將陣列n的前5個元素作為向量a的初值 vector a n 1 n 4 ...

2018 4 11刷題筆記

classa newa newa newa echo a num 答案是3 因為static變數常駐記憶體 server 是乙個包含了諸如頭資訊 header 路徑 path 以及指令碼位置 script locations 等等資訊的陣列。這個陣列中的專案由 web 伺服器建立。不能保證每個伺服器...