算法通关村——不简单的数组增删改查

数组的插入和删除并不是一个简单的问题,会涉及到比较麻烦的边界问题需要考虑清楚。

如给定一个数组,以及size(已经存储元素的个数)和element(需要插入的元素),我们需要考虑清楚四个问题。1、size和len(arr)的关系,2、index初始值,3、循环遍历的数量。4、列表移动的最后一个元素,考虑清楚一下问题,可以得到下列代码。

# 数组的插入问题,size是数组已经存储的元素的数量,从1开始编号,element为待插入的元素。
def addByElementSequence(arr, size, element):
    # 问题1
    if size >= len(arr):
        return -1
    # 问题2,要考虑到头部、中间和末尾的情况,如果没找到直接插入到末尾
    index = size
    
    # 问题3,找到新元素的插入位置
    for i in range(size):
        if element < arr[i]:
            index = i
            break
    # 问题4,元素后移的位置,左闭右开
    for j in range(size,index,-1):
        arr[j] = arr[j-1]
    arr[index] = element
    return arr
arr1 = [1,2,3,8,9,10,0,0,0,0]
arr2 = addByElementSequence(arr1,6,11)
print(arr2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w黑马王子w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值