题意整理。
- 给定一个Time类,包括小时、分钟两个成员变量。
- 要求对Time类重载加号运算符。
方法一(运算符重载)
1.解题思路
- 首先定义加号重载方法。
- 然后计算对应时间相加的结果。分钟m范围为0-59,所以小时数的结果需要加上分钟数的进位,分钟数的结果需要对60取余。
图解展示:
2.代码实现
#include <iostream>
using namespace std;
class Time {
public:
int hours; // 小时
int minutes; // 分钟
Time() {
hours = 0;
minutes = 0;
}
Time(int h, int m) {
this->hours = h;
this->minutes = m;
}
void show() {
cout << hours << " " << minutes << endl;
}
//定义加号重载方法......
Time operator+(Time& t){
//记录相加之后的时间
Time time;
//分钟m范围为0-59,所以小时数的结果需要加上分钟数的进位
time.hours=hours+t.hours+(minutes+t.minutes)/60;
//分钟数的结果需要对60取余
time.minutes=(minutes+t.minutes)%60;
return time;
}
};
int main() {
int h, m;
cin >> h;
cin >> m;
Time t1(h, m);
Time t2(2, 20);
Time t3 = t1 + t2;
t3.show();
return 0;
}
3.复杂度分析
- 时间复杂度:需要进行常数次操作,所以时间复杂度为。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为。