网站套站什么意思百度推广销售员的工作内容
56. 合并区间
class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {//先按照每个区间的左元素排序,这样每个区间的左边界就固定了,所以之后考虑相邻的//区间是否是相交的就行 类似与栈的操作//先放进栈一个区间,第一个区间的左边界一定是整个大区间的最左边界//这个点是固定的 不用考虑 然后考虑每两个相邻的区间 //如果第一个区间的右边界大于第二个区间的左边界,就说明这两个区间是相交的//要合并区间 左边界取第一个区间的左边界 右边界取两个区间右边界的最大值//放入ans数组 除第一次ans为空的情况直接插入第一个区间 //之后每次比较的两个区间就是ans.back()和intervals数组中最左边没有考虑的区间sort(intervals.begin(),intervals.end());vector<vector<int>> ans;for(auto &it:intervals){if(!ans.empty()&&it[0]<=ans.back()[1]){int l = ans.back()[0];int r = max(it[1],ans.back()[1]);ans.pop_back();ans.push_back({l,r});}else{ans.push_back({it[0],it[1]});}}return ans;}
};
C和C++的区别
头文件
● C语言的头文件结尾有.h
● C++的头文件没有.h
● C++中使用C的头文件可以把.h去掉 在前面补一个c 比如math.h和cmath
前缀c和后缀.h
使用c开头的头文件是为了标明这是C++版本的C语言标准库,这些库函数和宏定义都是在std命名空间里的,提供了更好的兼容性和类型安全性。而.h的头文件依然可以在C++中直接使用,并且这些函数和宏定义是直接可以在全局作用域中使用的,不属于任何的命名空间
C语言是过程式编程语言,C++是面向对象的编程语言,兼顾过程式编程
C++相对C语言增强了类型检查,结构体允许定义函数了(类似于class,访问权限默认是public)支持了类、对象、继承、多态、封装、抽象、构造函数、析构函数、new、delete、引用、模版、STL容器、算法库、迭代器、命名空间、默认函数参数、函数重载、运算符重载、异常处理、多线程支持。
布尔、整型、浮点、指针类型和0做比较
bool:
- 与
0
比较时,布尔值会保持自身语义,不会出现精度或隐式转换问题。 - 直接使用布尔变量进行条件判断更自然(如
if (b1)
或if (!b2)
)。
整型
- 整型与
0
比较是非常常见的用法,没有浮点型或指针类型的潜在问题。 - 对于非零值的判断,可以直接写为
if (a)
,而无需显式比较a != 0
。
浮点类型(float
, double
)
- 浮点类型可以直接与
0
比较,但由于 浮点精度误差 的存在,直接比较结果可能会不准确。 - 通常不推荐直接与
0
使用==
或!=
进行比较,而是使用一个小的容差值(epsilon
)来进行近似比较。
指针类型与 0
比较
- 在 C++ 中,
0
是空指针常量,可用来表示一个空指针(nullptr
在 C++11 中引入,之前常用0
表示空指针)。 - 指针与
0
比较用于判断指针是否为空指针。
nullptr_t类型
- 唯一的值:
std::nullptr_t
类型的唯一值是nullptr(右值)
。 - 隐式转换:
std::nullptr_t
类型的对象可以隐式转换为任意指针类型(如int*
、char*
、void*
等),但不能转换为非指针类型(如int
或float
)。 - 语义明确:它明确表示 "空指针" 的含义,而不是整数
0
或其他类型。
malloc、calloc、realloc的区别
#include <stdlib.h>
#include <stdio.h>int main() {// malloc 示例int* malloc_arr = (int*)malloc(5 * sizeof(int)); // 分配未初始化内存if (malloc_arr) {for (int i = 0; i < 5; i++) malloc_arr[i] = i;free(malloc_arr);}// calloc 示例int* calloc_arr = (int*)calloc(5, sizeof(int)); // 分配并初始化为 0if (calloc_arr) {for (int i = 0; i < 5; i++) printf("%d ", calloc_arr[i]);free(calloc_arr);}// realloc 示例int* realloc_arr = (int*)malloc(3 * sizeof(int));if (realloc_arr) {realloc_arr = (int*)realloc(realloc_arr, 6 * sizeof(int)); // 调整大小free(realloc_arr);}return 0;
}