每日计划-1124
1. 完成 53. 最大子数组和
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int pre=0,maxA=nums[0];
for(const auto &x:nums){
pre=max(pre+x,x);
maxA=max(maxA,pre);
}
return maxA;
}
};
该代码通过遍历整数数组nums
,利用动态规划思想,不断更新以当前元素结尾的连续子数组最大和及全局最大子数组和,最终返回最大子数组和的值。
2. 八股部分
-
C++ 中的类型别名和 using 声明的定义
- 类型别名:类型别名是为已存在的类型创建一个新的名字。它可以让代码更具可读性,并且在需要修改类型时,只需要修改别名定义,而不用在所有使用该类型的地方进行修改。在 C++ 中有两种方式创建类型别名,一种是使用
typedef
关键字(这是 C 语言就有的方式,在 C++ 中也可以使用),另一种是使用using
关键字。 - using 声明:
using
声明在 C++ 中有多种用途,其中一个重要的用途是创建类型别名。它的语法更加直观,类似于变量声明,并且可以用于模板别名等更复杂的类型定义场景,增强了类型定义的灵活性。
- 类型别名:类型别名是为已存在的类型创建一个新的名字。它可以让代码更具可读性,并且在需要修改类型时,只需要修改别名定义,而不用在所有使用该类型的地方进行修改。在 C++ 中有两种方式创建类型别名,一种是使用
-
使用类型别名和 using 声明的方法
- 使用类型别名(typedef 方式)
- 对于基本数据类型,例如为
unsigned int
创建一个别名UINT
,可以写成typedef unsigned int UINT;
。之后在代码中就可以使用UINT
来代替unsigned int
,如UINT num = 10;
。 - 对于结构体类型,假设定义了一个结构体
struct Point {int x; int y;};
,可以使用typedef struct Point Point2D;
为struct Point
创建别名Point2D
,然后就可以用Point2D p; p.x = 1; p.y = 2;
来创建结构体变量并赋值。
- 对于基本数据类型,例如为
- 使用 using 声明创建类型别名
- 对于基本数据类型,创建
unsigned int
的别名UINT
可以写成using UINT = unsigned int;
,使用方式和typedef
方式一样,如UINT num = 10;
。 - 对于自定义类型(如类或结构体),如果有一个类
class MyClass {...};
,可以使用using MyAlias = MyClass;
来创建别名MyAlias
,之后就可以用MyAlias obj;
来创建MyClass
类型的对象。 - using 声明在模板别名中的应用(更高级的用法)
- 假设定义了一个模板类
template<typename T> class MyTemplate {...};
,可以使用using MyTemplateAlias = MyTemplate<int>;
来为MyTemplate<int>
创建一个别名MyTemplateAlias
,这样就可以用MyTemplateAlias obj;
来创建一个MyTemplate<int>
类型的对象。这种模板别名的方式在处理复杂的模板类型时非常有用,可以简化类型的使用。
- 假设定义了一个模板类
- 对于基本数据类型,创建
- 使用类型别名(typedef 方式)