您的位置:首页 > 编程语言 > C语言/C++

leetcode 539. Minimum Time Difference 时间最小差值 + C++中stringstream一个很好示例

2017-12-17 15:00 525 查看
Given a list of 24-hour clock time points in “Hour:Minutes” format, find the minimum minutes difference between any two time points in the list.

Example 1:

Input: [“23:59”,”00:00”]

Output: 1

Note:

The number of time points in the given list is at least 2 and won’t exceed 20000.

The input time is legal and ranges from 00:00 to 23:59.

题意很简单,注意这几个事项:

1)对string直接排序即可,字典排序是可以的

2)对于最后一个时间节点的计算需要加上24*60min

同样的本题注意对C++的stringstream的使用

建议和这一道题leetcode 537. Complex Number Multiplication C++中的stringstream真的很好用 一起学习

代码如下:

#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <string>
#include <climits>
#include <algorithm>
#include <sstream>
#include <functional>
#include <bitset>
#include <numeric>
#include <cmath>

using namespace std;

class Solution
{
public:
int findMinDifference(vector<string>& timePoints)
{
int minDif = 24 * 60;
sort(timePoints.begin(),timePoints.end());
for (int i = 0; i < timePoints.size(); i++)
{
string a = timePoints[i], b = timePoints[(i + 1) % timePoints.size()];
stringstream sa(a), sb(b);
int h1, m1, h2, m2;
char c;
sa >> h1 >> c >> m1;
sb >> h2 >> c >> m2;
int dif = (h2 - h1) * 60 + (m2 - m1);
if (i == timePoints.size() - 1)
dif += 24 * 60;
minDif = min(minDif, dif);
}
return minDif;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐