剑指offer 数组

数组概念介绍

数据是最简单的数据结构,它占据一块连续的内存并按照顺序存储数据。创建数组时,首先指点数组的容量大小,然后根据大小分配内存。

缺点:空间效率不高。经常有空闲的区域灭有得到充分利用。
优点:时间效率很高。可以根据时间效率高的特点,来实现简单的哈希表:把数组的下标设为哈希表的键值,数组中的每一个数字设为哈希表的值,“键值-值”配对。快速高效。
解决方法: 动态数组。这对时间性能有负面影响,因此使用动态数组时要尽量减少改变数组容量大小的次数。

当我们声明一个数组的时候,其数组的名字也是一个指针,该指针指向数组的第一个元素。

在这里插入图片描述

输出为 20,4,4 。data1 是一个数组,sizeof(data1)是求数组的大小。这个数组包含5个整数,每个整数占4个字节,因此共占用20个字节,data2声明为指针,对任意指针求sizeof,得到的结果都是4.**当数组作为函数的参数进行传递的时候,数组就自动退化为同类型的指针。**因此,尽管函数getsize 的参数data被声明为数组,但是它会退化为指针,size4的结果仍然是4.

数组中重复的数字。

在这里插入图片描述

# -*- coding:utf-8 -*-
class Solution:
    # 这里要特别注意~找到任意重复的一个值并赋值到duplication[0]
    # 函数返回True/False
    def duplicate(self, numbers, duplication):
        # write code here
        if numbers is None or len(numbers) == 0:
            return False
        for i in numbers:
            if i < 0 or i >= len(numbers):
                return False
        for i in range(len(numbers)):
            while i != numbers[i]:
                if numbers[i] == numbers[numbers[i]]:
                    duplication[0] = numbers[i]
                    return True
                tmp = numbers[numbers[i]]
                numbers[numbers[i]] = numbers[i]
                numbers[i] = tmp
        return False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值