这是六月集训的第九日,今日的训练内容是 二分查找
解题报告 1.力扣981 原题链接981. 基于时间的键值存储
题目概述解题思路设计一个基于时间的键值数据结构,该结构可以在不同时间戳存储对应同一个键的多个值,并针对特定时间戳检索键对应的值。
实现 TimeMap 类:
TimeMap() 初始化数据结构对象
void set(String key, String value, int timestamp) 存储键 key、值 value,以及给定的时间戳 timestamp。
String get(String key, int timestamp)
返回先前调用 set(key, value, timestamp_prev) 所存储的值,其中 timestamp_prev <= timestamp 。
如果有多个这样的值,则返回对应最大的 timestamp_prev 的那个值。
如果没有值,则返回空字符串(“”)。
对于类还是感觉到比较陌生,读题上有很大的问题,这个月学完c++的OOP之后回来用c++重刷。
源码剖析
2.力扣400
原题链接
400. 第 N 位数字
题目概述解题思路给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 位上的数字。
题意是,在123467891011…这样的数字序列上找到第 n 位的值。
首先排除字符串的写法,填入的数实在是太多了。先来找一下规律,一位数一共有 9 个,二位数一共有 10~99 共计90个,三位数一共有 100~999 共计9000个,也就是说每一个位数的数字都占据 9*10^位数个数,然后再考虑到其占据的位数就是 位数x数字数 。
重新回来思考一下,假如给定了一个数字,那么首先就应当判断一下它所在的位置是什么几位数所在的位置,然后再来具体寻找它是什么数字。
先做记录。
源码剖析
3.力扣1300
原题链接
1300. 转变数组后最接近目标值的数组和
4.力扣1713 原题链接1713. 得到子序列的最少 *** 作次数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)