LeetCode笔记

  本文记录一下自己在leetcode刷题过程中遇到的常用问题的实现方式或者常用的知识点,参考的都是比较官方、比较正确、效率较高的实现方式。类似于高中数学的笔记本,记一些常用的解题技巧,有助于提升做题速度。本文长期更新,希望本文不要“太监”。

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运行下面的定义方式会报错,不允许溢出计算)。如:

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

或:

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

(2)<climits>(limits.h)头文件中定义了特定系统和编译器对应的整型数据的的范围。可通过如下方式调用:

#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;
posted @ 2020-09-19 21:19  wtyuan  阅读(298)  评论(0编辑  收藏  举报