数据结构之数组

数组基本知识点

知识点一——简介

  1. 数组占据一块连续的内存并按照顺序存储数据,并且再创建数组时指定数组的容量大小

  2. 数组读/写时间复杂度为O(1)。

  3. 数组变量声明,需要指明数组元素类型和数组变量的名字(仅仅是声明并没有初始化为一个真正的数组):
    int[] a 或者int a[]
    使用new运算符创建数组:
    int[] a = new int[100]

  4. 创建数字数组时 ,所有元素初始为0boolean数组元素初始化为false;对象数组的元素初始化为null.

  5. 如果需要再运行过程中扩展数组的大小,使用另外一种数据结构————数组列表(array list)

知识点二——for each循环

增强for循环可以依次处理数组的每个元素:

for( varivable : collection) statement

示例:

for(int element : a) System.out.println(element);

更简单打印数组中的所有值————Arrays类的toString方法。Arrays.toString(a)返回一个包含数组元素的字符串,这些元素被放置在括号内,并用逗号隔开,比如"[2,3,4,5,6]",打印数组可以调用

System.out.println(Arrays.toString(a));

知识点三——数组初始化及匿名数组

方法1:int[] a = { 2, 3, 5, 6}
方法2:int[] a = new int[]{2, 3, 5, 6}
方法3(匿名数组) new int[] { 2, 3, 5, 6}

知识点四——数组拷贝

数组拷贝本质是两个数组变量引用同一个数组

int[] LuckyNumber = smallPrimes;
LuckyNumber[5] = 12;

拷贝一个数组变量
拷贝数组另一个方法(可以增加数组长度)——数组2 =Arrays.copyOf(数组1,数组2长度)

int[] copiedLuckyNumber = Arrays.copyOf(LuckyNumber, LuckyNumber.length)

知识点五——命令行参数

针对java应用程序中String arg[]参数的main方法,表明mainc方法将接受一个字符串数组,也就是命令行参数。
示例程序
运行代码:

java Message -g cruel world

则args数组内容为:

args[0]="-g";args[1]=“cruel”; args[2]=“world”

运行结果显示:

Goodbye, cruel world

知识点六——数组排序

对数值型数组排序可以使用Arrays.sort(a)

备注:

  • Math.random()返回一个0到1(包含0不包含1)的随机浮点数
  • Arrays.sort(a):采用优化的快速排序算法对数组进行排序
  • Arrays.toString(type[] a):返回包含a中数据元素的字符串,这些元素被放在括号里,并用逗号隔开(a类型为int,long, short,char, byte, boolean, float, double的数组)
  • Arrays.copyOf(type[] a, int length)
  • Arrays.copyOfRange(type[] a,int start, int end):包含start,不包含end,返回与a类型相同的数组
  • Arrays.binarySearch(type[] a,type v)
  • Arrays.binarySearch(type[] a, int start, int end, type v):在start~end之间二分查找v,成功返回下标值;失败返回负数值r
  • Arrays.fill(type[] a, type v):将所有元素值设置为v
  • Arrays.equals(type[] a,type[] b):如果两个数组大小相同, 并且下标相同的元素都对应相等,返回true。

知识点七——多维数组

  1. 多维数组的声明与一维数组相同,如二维数组:

int[][] a = new int[length][length];
int[][] a;
int[][] a ={{1,2 },{1,3},{4, 6}};

java实际上没有多维数组,只有一维数组,多维数组被解释为“数组的数组”。
一个二维数组

数组类型例题——leedcode

简单例题

例题一——面试题03:数组中重复的数字
例题二——面试题04:二维数组中的查找
例题三——leedcode121~122:买卖股票的最佳时机
例题四——面试题53:寻找重复的数字I与寻找缺失的数字II
例题五——Leetcode面试题16.11:跳水板
例题六——面试题39:数组中出现次数超过一半的数字

中等例题

例题一——Leetcode34:在数组中查找元素的第一个位置和最后一个位置
例题二——Leetcode78:子集
例题三——Leetcode78:子集II

困难题目

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值