本专题(每周总结)是对于自己在写代码过程中遇到不清楚的语句/函数/其他的解答汇总,内容比较基础,希望能有所收获。
1. nums[slow++] = nums[fast]; 等价于nums[slow] = nums[fast]; slow++;
2. sort函数
调用方式: void sort(first,last);(默认升序) void sort(first,last,Compare comp);(自定义)
使用场景:仅支持可随机访问的容器,如数组,string,vector,deque等。
排序原理:除了对快排的优化,还结合了插入排序和堆排序,根据不同的数量级别以及不同情况,自动选用合适的排序方法。当数据量较大时采用快速排序,分段递归。一旦分段后的数据量小于某个阀值,为避免递归调用带来过大的额外负荷,便会改用插入排序。而如果递归层次过深,有出现最坏情况的倾向,还会改用堆排序。故时间复杂度为 O(nlogn)。
3. INT32_MAX
INT_MAX代表最大整数值的宏,INT_MIN表示最小整数值的宏,它们在头文件<limits.h>中定义。当需要将变量初始为最大/最小值时,使用宏可以免于记忆实际值,且在所有机器上具有一致的编程模式,使用方便。
4. ListNode *pre = new ListNode(0); //申请了一个值为0的结点
ListNode *pre = new ListNode(0,head); //申请了一个值为0的结点且 pre->next = head;
5. NULL 和 nullptr
为解决NULL代替0表示空指针在函数重载时会出现问题,在C++11版本中引入了nullptr,可以保证在任何情况下都代表空指针。