当前位置: 面试刷题>> 动态数组ArrayList (经典算法题500道)
### 题目描述补充
**题目**: 实现一个动态数组(ArrayList)的基本功能
**要求**:
1. 实现一个动态数组类,支持以下基本操作:
- `append(element)`: 向数组末尾添加一个元素。
- `insert(index, element)`: 在指定索引位置插入一个元素,索引从0开始,若索引超出当前数组长度,则添加到末尾。
- `remove(index)`: 删除指定索引位置的元素,并返回该元素。如果索引超出范围,则返回错误或特定值(如`null`)。
- `get(index)`: 获取指定索引位置的元素。如果索引超出范围,则返回错误或特定值(如`null`)。
- `size()`: 返回数组中元素的数量。
- `isEmpty()`: 判断数组是否为空。
**注意**: 动态数组需要能够自动扩容以适应元素数量的增加,同时保持元素的顺序。
### PHP 示例代码
```php
class ArrayList {
private $elements;
public function __construct() {
$this->elements = [];
}
public function append($element) {
$this->elements[] = $element;
}
public function insert($index, $element) {
if ($index > count($this->elements)) {
$this->append($element);
} else {
array_splice($this->elements, $index, 0, [$element]);
}
}
public function remove($index) {
if ($index >= 0 && $index < count($this->elements)) {
return array_splice($this->elements, $index, 1)[0];
}
return null; // 索引超出范围
}
public function get($index) {
if ($index >= 0 && $index < count($this->elements)) {
return $this->elements[$index];
}
return null; // 索引超出范围
}
public function size() {
return count($this->elements);
}
public function isEmpty() {
return empty($this->elements);
}
}
// 使用示例
$arrayList = new ArrayList();
$arrayList->append(1);
$arrayList->insert(0, 0);
echo $arrayList->get(0); // 输出 0
echo $arrayList->size(); // 输出 2
```
### Python 示例代码
```python
class ArrayList:
def __init__(self):
self.elements = []
def append(self, element):
self.elements.append(element)
def insert(self, index, element):
if index > len(self.elements):
self.elements.append(element)
else:
self.elements.insert(index, element)
def remove(self, index):
if 0 <= index < len(self.elements):
return self.elements.pop(index)
return None # 索引超出范围
def get(self, index):
if 0 <= index < len(self.elements):
return self.elements[index]
return None # 索引超出范围
def size(self):
return len(self.elements)
def isEmpty(self):
return len(self.elements) == 0
# 使用示例
array_list = ArrayList()
array_list.append(1)
array_list.insert(0, 0)
print(array_list.get(0)) # 输出 0
print(array_list.size()) # 输出 2
```
### JavaScript 示例代码
```javascript
class ArrayList {
constructor() {
this.elements = [];
}
append(element) {
this.elements.push(element);
}
insert(index, element) {
if (index > this.elements.length) {
this.append(element);
} else {
this.elements.splice(index, 0, element);
}
}
remove(index) {
if (index >= 0 && index < this.elements.length) {
return this.elements.splice(index, 1)[0];
}
return null; // 索引超出范围
}
get(index) {
if (index >= 0 && index < this.elements.length) {
return this.elements[index];
}
return null; // 索引超出范围
}
size() {
return this.elements.length;
}
isEmpty() {
return this.elements.length === 0;
}
}
// 使用示例
const arrayList = new ArrayList();
arrayList.append(1);
arrayList.insert(0, 0);
console.log(arrayList.get(0)); // 输出 0
console.log(arrayList.size()); // 输出 2
```
**码小课网站中有更多相关内容分享给大家学习**,涵盖数据结构、算法等进阶知识,助力大家编程技能的提升。