LeetCode刷题过程中的一些小tips
0.
1.
發現沒,與數組遍歷、當前元素和前后元素大小比較 相關的都用單調棧
2.
sql運行順序查一下(運行順序依次是from、where、group by、select order by。先根據s1.Id進行分組,然后計算(count)組內大于等于score的個數(去重),也就是這個score的排名。)
3.
isstream流的用法。
4.
stoi()函數如果傳入的字符串s中含有不是數字的字符,則只會識別到從開頭到第一個非法字符之前,如果第一個字符就是非法字符則會報錯
atoi和stoi相同點:
①都是C++的字符處理函數,把數字字符串轉換成int輸出
②頭文件都是#include
不同點:
①atoi()的參數是 const char* ,因此對于一個字符串str我們必須調用 c_str()的方法把這個string轉換成 const char類型的,而stoi()的參數是const string,不需要轉化為 const char*;
②stoi()會做范圍檢查,默認范圍是在int的范圍內的,如果超出范圍的話則會runtime error!
5.
isalpha()用來判斷一個字符是否為字母,如果是字符則返回非零,否則返回零。
isalnum()用來判斷一個字符是否為數字或者字母,也就是說判斷一個字符是否屬于az||AZ||0~9。
isdigit()用來判斷一個字符是否為數字
islower()用來判斷一個字符是否為小寫字母,也就是是否屬于a~z。
isupper()和islower相反,用來判斷一個字符是否為大寫字母。
注:以上均為宏定義,并非真正函數。
6.
7.二叉樹中兩個結點的距離:https://www.cnblogs.com/wxdjss/p/5698071.html
假設給定的節點為node1,node2,可以分為下面的兩種情況:
1)node1是node2的祖先節點或孩子結點,可以理解為兩個節點在一條線上。例如:Dist(2,4),Dist(6,1)
2)node1和node2沒有直接或間接的父子關系。例如,Dist(4,3),他們需要一個共同的祖先結點1連接起來
假設lca是兩個節點的最低公共祖先節點:
Dist(n1,n2)=Dist(root,n1)+Dist(root,n2)-2*Dist(root,lca)
這個公式已經涵蓋了上面的兩種情況。先找出lca,再求root節點到某個節點的距離就比較簡單了。
8.
Java自定義排序:https://blog.csdn.net/qq_37405320/article/details/72862155
基本方法
int compare(Object o1, Object o2) 返回一個基本類型的整型
如果要按照升序排序,
則o1 小于o2,返回-1(負數),相等返回0,o1大o2返回1(正數)return o1-o2;
如果要按照降序排序
則o1 小于o2,返回1(正數),相等返回0,o1大于o2返回-1(負數)return o2-o1;
9. C++ string insert
10 . Java中List, Integer[], int[]的相互轉換
除了循環遍歷外:流操作
注意:List list2 = Arrays.asList(integers1);調用 Arrays.asList()時,其返回值類型是ArrayList,但此ArrayList是Array的內部類,比如調用add()時,就會報錯:java.lang.UnsupportedOperationException,并且結果會因為array的某個值的改變而改變,所以最好再次構造一個新的ArrayList: List list2 = new ArrayList<>(Arrays.asList(integers1))
1. 二進制1的個數
統計二進制1的個數可以分別獲取每個二進制位數,然后再統計其1的個數,此方法效率比較低
計算其 **a &= (a-1)**的結果:
2.C++字符串分割
字符串切割的使用頻率還是挺高的,string本身沒有提供切割的方法,但可以使用stl提供的封裝進行實現或者通過c函數strtok()函數實現。
1、通過stl實現
涉及到string類的兩個函數find和substr:
1、find函數
原型:size_t find ( const string& str, size_t pos = 0 ) const;
功能:查找子字符串第一次出現的位置。
參數說明:str為子字符串,pos為初始查找位置。
返回值:找到的話返回第一次出現的位置,否則返回string::npos
2、substr函數
原型:string substr ( size_t pos = 0, size_t len = npos ) const;
功能:獲得子字符串。
參數說明:pos為起始位置(默認為0),len為字符串長度(默認為npos)
返回值:子字符串
代碼如下:
2、通過使用strtok()函數實現
原型:char *strtok(char *str, const char *delim);
功能:分解字符串為一組字符串。s為要分解的字符串,delim為分隔符字符串。
描述:strtok()用來將字符串分割成一個個片段。參數s指向欲分割的字符串,參數delim則為分割字符串,當strtok()在參數s的字符串中發現到參數delim的分割字符時 則會將該字符改為\0 字符。在第一次調用時,strtok()必需給予參數s字符串,往后的調用則將參數s設置成NULL。每次調用成功則返回被分割出片段的指針。
其它:strtok函數線程不安全,可以使用strtok_r替代。
代碼如下:
總結
以上是生活随笔為你收集整理的LeetCode刷题过程中的一些小tips的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 编译指定libiconv,PHP
- 下一篇: STM32开发小结--使用STM32F4