题目:
难度中等122收藏分享切换为英文接收动态反馈
给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。
示例 1:
输入:timePoints = ["23:59","00:00"] 输出:1
示例 2:
输入:timePoints = ["00:00","23:59","00:00"] 输出:0
提示:
-
2 <= timePoints <= 2 * 104
-
timePoints[i]
格式为 "HH:MM"
思路:
先将字符串中间的那个冒号去掉然后转为分钟时间,因为可能这个时间是第二天的时间所以不仅要把这个时间放入数组中还要把它加上1440放入数组中,之后排序 ,寻找数组元素中间的最小差值。
代码:
class Solution {
public:
//先写一个string处理的函数
int findMinDifference(vector<string>& timePoints) {
vector<int>shuzu;//用来存放数字的数组
for(int i=0;i<timePoints.size();i++)
{ timePoints[i].erase(timePoints[i].begin()+2);
int answer=std::stoi(timePoints[i]);
//把这个数字转换成分钟放入数组中去
answer=(answer/100)*60+(answer%100);//前面的数字乘以60min 后面的数字直接加上去
shuzu.push_back(answer);
shuzu.push_back(answer+1440);
}
sort(shuzu.begin(),shuzu.end());//对这个数组进行排序
int chazhi=99999999;//初始化差值
for(int i=1;i<shuzu.size();i++)
{
if(shuzu[i]-shuzu[i-1]<chazhi)
{
chazhi=shuzu[i]-shuzu[i-1];
}
}
return chazhi;
}
};