LeetCode筆記

本文記錄一下本身在leetcode刷題過程當中遇到的經常使用問題的實現方式或者經常使用的知識點,參考的都是比較官方、比較正確、效率較高的實現方式。相似於高中數學的筆記本,記一些經常使用的解題技巧,有助於提高作題速度。本文長期更新,但願本文不要「太監」。git

1. 獲得一個int型的數據每一位上的數

'''
每次循環獲得x的一位上的數,從右往左。
實際實現時,每次循環可把digit放到數組裏。
'''
while(x != 0){
      digit= x % 10;
      x /= 10;
}

2. 由一個int型數據每一位上的數,獲得原始的int型數據(接1.)

'''
每次循環取出存在數組裏的一位上的數,
若是想原順序,從數組中取一位上的數digit時,就從左往右(在原數x上的順序)。
若是想逆序,從數組中取一位的數digit時,就從右往左(在原數x上的順序)。
'''
int rev = 0;
for(循環條件){
      rev = rev * 10 + digit
}

3. int類型範圍

C++數據類型的範圍與系統與編譯器有關,int類型至少佔16bits,也就是範圍至少爲\([-2^{15},2^{15}-1]\)。在Visual Studio中,int佔32bits,範圍爲\([-2^{31}, 2^{31}-1]\)。有多種方式實現int類型範圍的使用。
(1)可直接在程序中定義int類型中的最大最小值:數組

int int_max = 0x7fffffff, int_min = 0x80000000;

因爲int_max = int_min - 1,且int_min = int_max + 1,因此也可只定義一個,另外一個經過已定義的獲得(LeetCode運行下面的定義方式會報錯,不容許溢出計算)。如:spa

int int_max = 0x7fffffff, int_min = int_max + 1;

或:code

int int_min = 0x80000000, int_max = int_min - 1;

(2)<climits>(limits.h)頭文件中定義了特定系統和編譯器對應的整型數據的的範圍。可經過以下方式調用:leetcode

#include <climits>
...
std::cout << INT_MAX << std::endl << INT_MIN << std::endl;

浮點類型數據的範圍定義在<cfloat>(float.h)頭文件中。
(3) <limits>頭文件中定義了類模板numeric_limits,包含了C++中全部算術類型(整型和浮點型)的相關信息。用numeric_limits獲得int類型的最大最小值方式以下:編譯器

#include <limits>
...
std::cout << std::numeric_limits<int>::max() << std::endl << std::numeric_limits<int>::min() << std::endl;
相關文章
相關標籤/搜索