嘿,我想知道是否有人可以进一步解释这一点。这不是一项任务,它只是我的一个测试的解决方案。我一直试图理解它,但我不确定..
基本上给出的答案的问题是:
[i]在 Java 中编写一个名为 RangeSet 的类,它使用布尔数组的数据结构来表示一组整数,使用 3 种方法: [list] [ ]add - 添加一个项目,但如果该项目已经存在,则保持集合不变集合的成员 [ ]remove - 删除一个项目,但如果项目不是集合的成员,则保持集合不变 [*]contains - 返回一个布尔值,表示项目是否是集合的成员 [/list ]
该类应该有一个构造函数,它接受一个整数 n 并给出一个表示一组的对象,该集合可以包含 1 到 n 范围内的整数。构造函数应该给出一个空集。该集合应该是破坏性的。如果集合被操作更改,则方法应返回 true,否则返回 false。[/i]
基本上,这里是一组整数,限制在 1 到 n 的范围内,由布尔数组实现。方法 add 和 remove 返回一个布尔值,说明该集合是否已被调用更改,假设所有参数方法 add、remove 和 contains 将在 1 到 n 范围内,因此没有特殊代码来处理参数不在范围内的情况。
class RangeSet
{
private boolean[] arr;
public RangeSet(int n)
{
arr = new boolean[n];
}
public boolean add(int n)
{
if(arr[n-1]) return false;
arr[n-1]=true;
return true;
}
public boolean remove(int n)
{
if(!arr[n-1]) return false;
arr[n-1]=false;
return true;
}
public boolean contains(int n)
{
return arr[n-1];
}
}
所以我想知道,为什么 arr = new boolean[n] 和 add(int n) 都由 'n' 表示?并且解决方案不是检查新输入的整数的位置而不是检查实际值吗?谢谢你。