1. 程式人生 > >Minimum Time Difference不復雜

Minimum Time Difference不復雜

  • 題目描述
    leecode medium題 “539. Minimum Time Difference”
    這裡寫圖片描述

  • 分析
    別看該題是中等難度的題,只要縷清思路,就很簡單,程式碼也很容易寫。

    如題所述,我們要找最小的時間差。最暴力的一種方法就是讓所給出的時間自由組合計算出各個的時間差,取最小的。

    但我們並沒有必要計算出所有組合的,因為有些時間的組合我們是可以直接排除的。怎麼排除?拿[00:20,12:45,20:13,23:11]舉例,對所有的時間進行排序後,那麼第一個時間和第二個時間的差肯定會小於(或等於)第一個時間和第三個(或第四個,第n個)的時間差,後者我們就沒必要計算,可直接排除了。

    所以,我們只需計算排序好的時間,兩兩之間的時間差取最小。但還有一個問題我們還沒有考慮進去,就是跨天的時間,也即排序好的時間的頭和尾的插計算,比如23:11和00:20,它倆的時間差可以是23:11-00:20(已經被我們排除不計算),但也可以是00:20-23:11。所以我們需要把後者計算出來,與之前篩選出來的最小時間差比較,看誰更小,來得到最終過結果。

    可能你會有個疑問,為什麼跨天的時間差你就只計算一個,而不計算諸如20:13和00:20的時間差呢?同樣道理,因為我們已經排過序了,那麼陣列末尾和陣列開頭的這個跨天時間差就一定是所有以跨天模式計算中最小的時間差了,其他的就沒必要再計算了。

  • 程式碼實現
    有時候,我們要善於站在巨人的肩膀上。所以,本次程式碼使用c++編寫,直接使用了一些現成的函式,如排序,string轉int等。

class Solution {
public:
    int findMinDifference(vector<string>& timePoints) {
        //排序
        sort(timePoints.begin(),timePoints.end());  

        int
min=1500,d; //陣列內兩兩之間的時間差 for (int i = 0; i < timePoints.size()-1;i++){ d=minutesDiffer(timePoints[i],timePoints[i+1],0); if(d<min) min=d; } //頭和尾以跨天形式計算的時間差 d=minutesDiffer(timePoints[timePoints.size()-1],timePoints[0],1
); if(d<min) min=d; return min; } int minutesDiffer(string &v1,string &v2,bool cross){ int diff; string hour1=v1.substr(0,2); string hour2=v2.substr(0,2); string min1=v1.substr(3,2); string min2=v2.substr(3,2); if(cross){ diff=atoi(min2.c_str())+(60-atoi(min1.c_str()))+60*(atoi(hour2.c_str())+(23-atoi(hour1.c_str()))); }else{ if(hour2.compare(hour1)==0){ diff=atoi(min2.c_str())-atoi(min1.c_str()); }else{ diff=atoi(min2.c_str())+(60-atoi(min1.c_str()))+60*(atoi(hour2.c_str())-atoi(hour1.c_str())-1); } } return diff; } };

相關推薦

Minimum Time Difference不復

題目描述 leecode medium題 “539. Minimum Time Difference” 分析 別看該題是中等難度的題,只要縷清思路,就很簡單,程式碼也很容易寫。 如題所述,我

539. Minimum Time Difference

++ 兩個 for points minutes iou epo nts cnblogs Given a list of 24-hour clock time points in "Hour:Minutes" format, find the minimum minutes

Python解Leetcode: 539. Minimum Time Difference

mini epo findmi range min logs 但是 urn obj 題目描述:給定一個由時間字符組成的列表,找出任意兩個時間之間最小的差值。 思路: 把給定的鏈表排序,並且在排序的同時把60進制的時間轉化成十進制整數; 遍歷排序的數組,求出兩個相鄰值之

539 Minimum Time Difference 最小時間差

tor dmi end 時間 minimum grand gin light fin 給定一個 24 小時制(小時:分鐘)的時間列表,找出列表中任意兩個時間的最小時間差並已分鐘數表示。示例 1:輸入: ["23:59","00:00"]輸出: 1備註: 1.列表中時間

leetcode--539. Minimum Time Difference

lee bsp ron hour output spa int NPU clas Given a list of 24-hour clock time points in "Hour:Minutes" format, find the minimum minutes di

[leetcode]539. Minimum Time Difference

[leetcode]539. Minimum Time Difference Analysis 今天要吃柚子—— [每天刷題並不難0.0] Given a list of 24-hour clock time points in “Hour:Minutes”

[LeetCode] Minimum Time Difference 最短時間差

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

[LeetCode]Minimum Time Difference(java)

我用set去重無重複則迴圈計算差值,而discuss則考慮用分鐘hash 貼一個我的答案 public class Solution { public int findMinDifferenc

[Swift]LeetCode539. 最小時間差 | Minimum Time Difference

convert int pla line sel result eal ranges color Given a list of 24-hour clock time points in "Hour:Minutes" format, find the minimum min

[LeetCode] 530. Minimum Absolute Difference in BST Java

lis https root ren str void init 搜索樹 dia 題目: Given a binary search tree with non-negative values, find the minimum absolute difference be

APP軟件開發流程並不復

appAPP軟件開發流程並不復雜,為什麽這麽說呢?只要我們知道都需要什麽角色就知道是什麽流程了。一般開發都離不開UI設計師、前端開發、後端開發、測試專員、產品經理等,利用他們不同的工作性質,我們可以將流程轉化為項目開發階段。這樣可以把復雜的流程簡化,更加容易理解了。  一、需求階段  1、需求討論:這是我們A

Binary Search Tree-530. Minimum Absolute Difference in BST

stream exp find aid 中序遍歷 namespace 遍歷 元素 note Given a binary search tree with non-negative values, find the minimum absolute difference b

[leetcode]Binary Search Tree-530. Minimum Absolute Difference in BST

public ren etc bsp edi this des search turn Given a binary search tree with non-negative values, find the minimum absolute difference b

【easy】530. Minimum Absolute Difference in BST

absolut for log pos mic eno absolute tro fin 找BST樹中節點之間的最小差值。 /** * Definition for a binary tree node. * struct TreeNode { * int

530. Minimum Absolute Difference in BST

http floor != quest inpu min 差值 question 題目 Given a binary search tree with non-negative values, find the minimum absolute difference be

[Swift]LeetCode530. 二叉搜尋樹的最小絕對差 | Minimum Absolute Difference in BST

Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes. Example: Input:

[LeetCode&Python] Problem 530. Minimum Absolute Difference in BST

Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes. Example: Input:

Linux下配置MySQL主從同步(不復,簡單明瞭)

明人不說暗話,直接進入正題 一、準備工作 假設兩個伺服器IP如下: 主伺服器:44.92.163.112    -Linux 從伺服器:114.74.22.11     -Linux 注意: 1、主從資料庫版本最好一致; 2、主從資料庫內資料保持一致;

[leetcode] 530. Minimum Absolute Difference in BST

題目: Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes. Example:

[LeetCode] Minimum Absolute Difference in BST 二叉搜尋樹的最小絕對差

Given a binary search tree with non-negative values, find the minimum absolute difference between values of any two nodes. Example: Input: 1