前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 539. 最小时间差(哈希)

LeetCode 539. 最小时间差(哈希)

作者头像
Michael阿明
发布2020-07-13 16:30:51
5370
发布2020-07-13 16:30:51
举报
文章被收录于专栏:Michael阿明学习之路

1. 题目

给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示。

代码语言:javascript
复制
示例 1:
输入: ["23:59","00:00"]
输出: 1

备注:
列表中时间数在 2~20000 之间。
每个时间取值在 00:00~23:59 之间。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/minimum-time-difference 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 字符串转换成 分钟 时间处理
  • 将分钟存进 哈希数组映射里(下标是分钟,内容是标记是否存在)
  • 最后依次取出,相邻的做差,求最小
  • 最后在考虑下第一个和最后一个的差
代码语言:javascript
复制
class Solution {
public:
    int findMinDifference(vector<string>& timePoints) {
        int mins[1440] = {0};
        int m, i;
        for(auto& s : timePoints)
        {
        	m = ((s[0]-'0')*10+s[1]-'0')*60+(s[3]-'0')*10+s[4]-'0';
        	if(mins[m] != 0)//已经存在
        		return 0;
        	mins[m] = 1;
        }
        int first, prev, last, ans = 1440;
        for(i = 0; i < 1440 && mins[i] == 0; i++){}
    	first = prev = i++;
    	for( ; i < 1440; ++i)
    	{
    		if(mins[i] == 1)
    		{
    			last = i;
    			ans = min(ans, last-prev);
    			prev = last;
    		}
    	}
    	return min(ans, first-last+1440);
    }
};
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档