算法进阶3-2
来源:互联网 发布:阿里云销售工资 编辑:程序博客网 时间:2024/06/05 20:45
题目一:
设计可以变更的缓存结构。
【题目】
设计一种缓存结构,该结构在构造时确定大小,假设大小为K,并有两个功能:
(1)set(key, value):将记录(key, value)插入该结构。
(2)get(key):返回key对应的value值。
【要求】
(1)set和get方法的时间复杂度为O(1)。
(2)某个key的set和get操作一旦发生,认为这个key的记录成了最经常使用的。
(3)当缓存的大小超过K时,移出最不经常使用的记录,即set或get最久远的。
【举例】
假设缓存结构的实例是cache,大小为3,并依次发生如下行为:
1.cache.set("A", 1)。最经常使用的记录为("A", 1)。
2.cache.set("B", 2)。最经常使用的记录为("B", 2),("A", 1)变为最不经常的。
3.cache.set("C", 3)。最经常使用的记录为("C", 3),("A", 1)还是最不经常的。
4.cache.get("A")。最经常使用的记录为("A", 1),("B", 2)变为最不经常的。
5.cache.set("D", 4)。大小超过了3,所以移除此时最不经常使用的记录("B", 2),加入记录("D", 4),并且为最经常使用的记录,然后("C", 3)变为最不经常使用的记录。
代码:(暂无,map+队列)
题目二:
给定一个N行3列二维数组,每一行表示有一座大楼,一共有N座大楼。所有大楼的底部都坐落在X轴上,每一行的三个值(a,b,c)代表每座大楼的从(a,0)点开始,到(b,0)点结束,高度为c。
输入的数据可以保证a<b,且a,b,c均为正数。大楼之间可以有重合。请输出整体的轮廓线。
例子:给定一个二维数组
[
[1, 3, 3],
[2, 4, 4],
[5, 6, 1]
]
输出为轮廓线
[
[1, 2, 3],
[2, 4, 4],
[5, 6, 1]
]
代码:(暂无)
题目三:
找到被指的新类型字符
【题目】
新类型字符的定义如下:
1.新类型字符是长度为1或者2的字符串。
2.表现形式可以仅是小写字母,例如,"e";也可以是大写字母+小写字母,例如,"Ab";还可以是大写字母+大写字母,例如,"DC"。现在给定一个字符串str,str一定是若干新类型字符正确组合的结果。比如"eaCCBi",由新类型字符"e"、"a"、"CC"和"Bi"拼成。再给定一个整数k,代表str中的位置。请返回被k位置指中的新类型字符。
【举例】
str="aaABCDEcBCg"。
1.k=7时,返回"Ec"。
2.k=4时,返回"CD"。
3.k=10时,返回"g"。
代码:
题目四:
字典树(前缀树)的实现
【题目】
字典树又称为前缀树或Trie树,是处理字符串常见的数据结构。假设组成所有单词的字符仅是“a”~“z”,请实现字典树结构,并包含以下四个主要功能。
void insert(String word):添加word,可重复添加。
void delete(String word):删除word,如果word添加过多次,仅删除一个。
boolean search(String word):查询word是否在字典树中。
int prefixNumber(String pre):返回以字符串pre为前缀的单词数量。
代码:
题目五:
给定一个整数数组arr,请返回子数组的最大异或值
要求:时间复杂度O(N)
代码:
题目六&七:
数字的英文表达和中文表达
【题目】
给定一个32位整数num,写两个函数分别返回num的英文与中文表达字符串。
【举例】
num=319
英文表达字符串为:Three Hundred Nineteen
中文表达字符串为:三百一十九
num=1014
英文表达字符串为:One Thousand, Fourteen
中文表达字符串为:一千零十四
num=-2147483648
英文表达字符串为:Negative, Two Billion, One Hundred Forty Seven Million, Four
Hundred Eighty Three Thousand, Six Hundred Forty Eight
中文表达字符串为:负二十一亿四千七百四十八万三千六百四十八
num=0
英文表达字符串为:Zero
中文表达字符串为:零
代码:
题目八:
一个数组如何能够拆出异或值为0的最多的子数组。
代码:
- 算法进阶3-2
- 算法进阶3-3
- 算法进阶3-1
- 算法进阶3-4
- 算法进阶3-5
- 算法进阶3-6
- 算法进阶
- 【2】算法进阶之秩序井然:八大排序
- 进阶级排序算法
- ACM算法进阶
- 进阶排序算法
- 算法进阶计划
- 算法高级进阶简述
- js算法--进阶
- Verilog算法进阶
- 筛法_算法进阶
- 进阶优化算法
- 算法进阶之贪心
- python 模块和包
- hdu 5534 Partial Tree(dp+降唯)
- Mysql| where子句过滤数据(BETWEEN,IS NULL,=,!=,...)
- 贝叶斯(二)
- python-035
- 算法进阶3-2
- linux集群自动化免密部署服务
- spring cloud的网关服务Zuul
- 在此计算机中仅有部分visual studio2010产品已升级到SP1,只有全部升级,产品才能正常运行
- TP3.2加载外部PHPexcel类,实现导入和导出
- Numpy库学习—squeeze()函数
- 数据库验证:用户登录框,动态产生验证码
- 机器学习学习笔记2-有监督学习和无监督学习
- 分布式一致性算法--Paxos