当前位置: 面试刷题>> 动态数组ArrayList (经典算法题500道)


题目描述补充

题目: 实现一个动态数组(ArrayList)的基本功能

要求

  1. 实现一个动态数组类,支持以下基本操作:
    • append(element): 向数组末尾添加一个元素。
    • insert(index, element): 在指定索引位置插入一个元素,索引从0开始,若索引超出当前数组长度,则添加到末尾。
    • remove(index): 删除指定索引位置的元素,并返回该元素。如果索引超出范围,则返回错误或特定值(如null)。
    • get(index): 获取指定索引位置的元素。如果索引超出范围,则返回错误或特定值(如null)。
    • size(): 返回数组中元素的数量。
    • isEmpty(): 判断数组是否为空。

注意: 动态数组需要能够自动扩容以适应元素数量的增加,同时保持元素的顺序。

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 示例代码

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 示例代码

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

码小课网站中有更多相关内容分享给大家学习,涵盖数据结构、算法等进阶知识,助力大家编程技能的提升。

推荐面试题