摘要:找到所有可用的數(shù),排序后存起來從右到左對進(jìn)行操作,只要有當(dāng)前最小單位時(shí)間的替換,返回替換后的時(shí)間找到的位置,然后加得到下一個(gè)位置如果下一個(gè)位置的數(shù)還是原來的數(shù),或者超過了上限數(shù),前進(jìn)到再下一個(gè)
Problem
Given a time represented in the format "HH:MM", form the next closest time by reusing the current digits. There is no limit on how many times a digit can be reused.
You may assume the given input string is always valid. For example, "01:34", "12:09" are all valid. "1:34", "12:9" are all invalid.
Example 1:
Input: "19:34"
Output: "19:39"
Explanation: The next closest time choosing from digits 1, 9, 3, 4, is 19:39, which occurs 5 minutes later. It is not 19:33, because this occurs 23 hours and 59 minutes later.
Example 2:
Input: "23:59"
Output: "22:22"
Explanation: The next closest time choosing from digits 2, 3, 5, 9, is 22:22. It may be assumed that the returned time is next day"s time since it is smaller than the input time numerically.
class Solution { public String nextClosestTime(String time) { char[] res = time.toCharArray(); //找到所有可用的數(shù),排序后存起來 char[] digits = new char[]{res[0], res[1], res[3], res[4]}; Arrays.sort(digits); //從右到左對res進(jìn)行操作,只要有當(dāng)前最小單位時(shí)間的替換,返回替換后的時(shí)間 res[4] = findNext(digits, res[4], "9"); if (res[4] > time.charAt(4)) return String.valueOf(res); res[3] = findNext(digits, res[3], "5"); if (res[3] > time.charAt(3)) return String.valueOf(res); res[1] = res[0] == "2" ? findNext(digits, res[1], "3") : findNext(digits, res[1], "9"); if (res[1] > time.charAt(1)) return String.valueOf(res); res[0] = findNext(digits, res[0], "2"); return String.valueOf(res); } private char findNext(char[] digits, char cur, char upper) { if (cur == upper) return digits[0]; //找到cur的位置,然后加1得到下一個(gè)位置 int pos = Arrays.binarySearch(digits, cur)+1; //如果下一個(gè)位置的數(shù)還是原來的數(shù),或者超過了上限數(shù),前進(jìn)到再下一個(gè) while (pos < 4 && (digits[pos] == cur || digits[pos] > upper)) pos++; return pos == 4 ? digits[0] : digits[pos]; } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71961.html
摘要:遞歸法復(fù)雜度時(shí)間空間思路根據(jù)二叉樹的性質(zhì),我們知道當(dāng)遍歷到某個(gè)根節(jié)點(diǎn)時(shí),最近的那個(gè)節(jié)點(diǎn)要么是在子樹里面,要么就是根節(jié)點(diǎn)本身。因?yàn)槲覀冎离x目標(biāo)數(shù)最接近的數(shù)肯定在二叉搜索的路徑上。 Closest Binary Search Tree Value I Given a non-empty binary search tree and a target value, find the va...
摘要:原題網(wǎng)址題意在二叉搜索樹當(dāng)中找到離最近的個(gè)數(shù)。解題思路由于二叉搜索數(shù)的中序遍歷是有序的,比如例子中的樹,中序遍歷為。 原題網(wǎng)址:https://leetcode.com/problems... Given a non-empty binary search tree and a target value, find?k?values in the BST that are closes...
摘要:這個(gè)題和的做法基本一樣,只要在循環(huán)內(nèi)計(jì)算和最接近的和,并賦值更新返回值即可。 Problem Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three intege...
摘要:前言從開始寫相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒有按順序?qū)懍F(xiàn)在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個(gè)索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開始寫leetcode相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒有按順序?qū)憽F(xiàn)在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個(gè)索引嘻嘻。 順序整理 1~50 1...
Problem In a row of seats, 1 represents a person sitting in that seat, and 0 represents that the seat is empty. There is at least one empty seat, and at least one person sitting. Alex wants to sit in...
閱讀 689·2021-09-30 09:47
閱讀 2879·2021-09-04 16:40
閱讀 867·2019-08-30 13:18
閱讀 3458·2019-08-29 16:22
閱讀 1564·2019-08-29 12:36
閱讀 596·2019-08-29 11:11
閱讀 1484·2019-08-26 13:47
閱讀 1137·2019-08-26 13:32