2020第四范式秋季补招-java后端

时长:120分钟 总分:100分

138浏览 0人已完成答题

题型介绍
题型 填空题
数量 3
1.
旋转相等
问题详情

给定两个字符串, A 和 B。A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A ='abcde',在移动一次之后结果就是'bcdea' 。如果在若干次旋转操作之后,A 能变成B,那么返回True。
输入描述: 共两行,第一行代表字符串A,第二行代表字符串B。且A和B的长度不超过100。A和B只包含大写、小写英文字符。输入样例: abcde cdeab 输出描述: 一行字符串,"True"代表能够通过旋转得到,"False"代表不能通过旋转的到输出样例 True
2.
凑硬币
问题详情

给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。
输入描述: 第一行两个个整数N和K, N代表需要达到的总金额,K代表有K种面额的硬币,用空格分隔。

第二行为K个整数a1,a2...ak,用空格分隔,代表K种面额的硬币。输入样例: 5 3 1 2 5 输出描述: 一个整数代表用所给面额的硬币组合成N的方案数。输出样例 4
3.
LRU缓存
问题详情

运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作:
获取数据 get 和 写入数据 put 。
获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回-1。
写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数据值,从而为新的数据值留出空间。
要求get和put都为O(1)的时间复杂度。
输入描述: 第一行是两个整数N,M。代表共有N次操作,缓存容量为M,用空格分隔。

第2~n+1行是n次操作,格式为"PUT x y"或"GET x"。x和y为题面所要求的数字。输入样例: 9 2 PUT 1 1 PUT 2 2 GET 1 PUT 3 3 GET 2 PUT 4 4 GET 1 GET 3 GET 4 输出描述: 对于每个GET操作,输出一行数字作为结果。输出样例 1 -1 -1 3 4