北京-益先科技-一面-笔试+技术面
- 笔试:具体要求和实现如下
import java.util.TreeSet;
public class SequenceManager {
/**
* 设计一个序列管理器(SequenceManager)类,维护一个严格递增的正整数序列,提供如下操作:
*
* 获取下一个数(Integer getNext())
* 功能:返回当前序列中缺失的最小正整数,并将该数添加到序列中
* 返回值:新添加到序列中的正整数
* 特性:保持序列严格递增
*
* 重命名操作(void rename(Integer oldNum, Integer newNum))
* 功能:将序列中的一个数字替换为另一个数字
* 参数:
* oldNum:要替换的现有数字
* newNum:替换后的新数字
* 约束条件:
* oldNum 必须存在于序列中
* newNum 不能存在于序列中
* 操作后序列仍保持严格递增
*
* 删除操作(void delete(Integer toDeleteNum))
* 功能:从序列中移除指定的数字
* 参数:要删除的数字
* 约束条件:待删除的数字必须存在于序列中
*
* 序列特性:
* 初始状态:空序列
* 有序性:严格递增(即任意相邻两个数字之间不相等)
* 元素唯一性:序列中不允许重复数字
*
* 操作示例:
* 初始状态:序列为空 {}
* getNext() → 返回1,序列变为 {1}
* getNext() → 返回2,序列变为 {1, 2}
* rename(2, 3) → 序列变为 {1, 3}
* getNext() → 返回2,序列变为 {1, 2, 3}
* getNext() → 返回4,序列变为 {1, 2, 3, 4}
*/
TreeSet<Integer> set = new TreeSet<>();
/**
* 返回当前序列中缺失的最小正整数,并将该数添加到序列中
*
* @return 新添加到序列中的正整数
*/
public Integer getNext() {
int excepted = 1;
for (Integer num : set) {
if (num > excepted) {
break;
}
excepted = num + 1;
}
set.add(excepted);
return excepted;
}
/**
* 将序列中的一个数字替换为另一个数字
*
* @param oldNum 要替换的现有数字
* @param newNum 替换后的新数字
*/
public void rename(Integer oldNum, Integer newNum) {
if (!set.contains(oldNum)) {
throw new RuntimeException("oldNum 不存在存在于序列中");
}
if (set.contains(newNum)) {
throw new RuntimeException("newNum 存在存在于序列中");
}
set.remove(oldNum);
set.add(newNum);
}
/**
* 从序列中移除指定的数字
*
* @param toDeleteNum 要删除的数字
*/
public void delete(Integer toDeleteNum) {
if (!set.contains(toDeleteNum)) {
throw new RuntimeException("toDeleteNum 不存在存在于序列中");
}
set.remove(toDeleteNum);
}
@Override
public String toString() {
return "SequenceManager{" +
"set=" + set +
'}';
}
public static void main(String[] args) {
/*
* 操作示例:
* 初始状态:序列为空 {}
* getNext() → 返回1,序列变为 {1}
* getNext() → 返回2,序列变为 {1, 2}
* rename(2, 3) → 序列变为 {1, 3}
* getNext() → 返回2,序列变为 {1, 2, 3}
* getNext() → 返回4,序列变为 {1, 2, 3, 4}
*/
SequenceManager sequenceManager = new SequenceManager();
System.out.println(sequenceManager.getNext() + ": " + sequenceManager);
System.out.println(sequenceManager.getNext()+ ": " + sequenceManager);
sequenceManager.rename(2,3);
System.out.println(sequenceManager);
System.out.println(sequenceManager.getNext()+ ": " + sequenceManager);
System.out.println(sequenceManager.getNext()+ ": " + sequenceManager);
}
}
学习过程中是否使用AI开发过
查看11道真题和解析