【数组】 实现一个支持动态扩容的数组
实现一个大小固定的有序数组,支持动态增删改操作
- 实现两个有序数组合并为一个有序数组
- 学习哈希表思想,并完成leetcode上的两数之和(1)及Happy Number(202)!(要求全部用哈希思想实现!)
class SortedArray: def __init__(self, capacity=15): """ 构造函数 """ self.size = 0 # 数组已使用大小 self.capacity = capacity # 数组最大容量 self.data = [''] * self.capacity #数组初始化 def SortedArrayAdd(self, elem): """ 对大小固定的有序数组进行增加元素 elem:待添加元素 """ # 首元素添加 if self.size == 0: self.data[0] = elem self.size += 1 # 数组已满就退出 elif self.size == self.capacity: return else: # 倒序遍历数组,移动后面的元素,直到找到插入位置 for i in range(self.size - 1, -1, -1): if elem < self.data[i]: self.data[i + 1] = self.data[i] else: break # 找到位置进行插入,更新size self.data[i + 1] = elem self.size += 1 def Delet(self, index): """ 删除指定位置index的元素 """ # 1.判断index的合法性 if index < 0 or index > self.size - 1: print("index不合法,删除失败!") return # 2.依次挪动 index 后元素 for i in range(index + 1, self.size+1, 1): self.data[i - 1] = self.data[i] # 3.更新size self.size -= 1
测试用例:
array_1 = SortedArray(15) # 列表增加元素 array_1.SortedArrayAdd(1) array_1.SortedArrayAdd(3) array_1.SortedArrayAdd(5) array_1.SortedArrayAdd(7) # 列表打印 print(array_1.data) #添加元素 array_1.SortedArrayAdd(1.23) # 列表打印 print(array_1.data) array_1.SortedArrayAdd(4) print(array_1.data) #删除元素 array_1.Delet(4) print(array_1.data)