数组扩容例题

简介: 数组扩容例题分析

前言

数组扩容例题分析

数组扩容

案例:

实现动态的给数组添加元素效果,实现对数组扩容。

要求:

1)原始数组使用静态分配, int [ ] = arr{1, 2, 3}

2)增加一个元素,使其添加到数组最后,例如增加元素4后 int [ ] = arr{1, 2, 3, 4}

3)用户可以通过如下方法来决定是否继续添加——添加成功,是否继续添加?y/n

importjava.util.Scanner;
publicclassArrayAdd {
publicstaticvoidmain(String[] args) {
ScannermyScanner=newScanner(System.in);
int[] arr= {1, 2, 3};
do {
int[] arrNew=newint[arr.length+1];
// 遍历arr数组,依次将arr的元素拷贝到 arrNew数组for(inti=0; i<arr.length; i++) {
arrNew[i] =arr[i];
            }
System.out.println("请输入你要添加的元素:");
intaddNum=myScanner.nextInt();
arrNew[arrNew.length-1] =addNum; //把addNum赋给arrNew的最后一个元素arr=arrNew;//让 arr 指向 arrNewfor(inti=0; i<arr.length; i++) {
System.out.print(arr[i] +"\t");
            }
//问用户是否继续System.out.println("是否继续输入 y/n:");
charc=myScanner.next().charAt(0);//接收 y / nif(c=='n') { //如果输入n就结束循环break;
            }
        } while (true);
System.out.println("已退出添加");
    }
}

分析:

1)定义一个初始数组,int[ ] arr = {1, 2, 3};

2)定义一个新的数组,int[ ] arrNew = new int[arr.length + 1]; 因为要存放新的数据,所以数组大小要加1

3)遍历 arr 数组,依次将 arr 的元素拷贝到 arrNew 数组

4)将 输入的 数据赋给 arrNew[arrNew.length - 1] ,理解为将输入的数赋给 arrNew 数组的最后一个元素

5)因为用户什么时候退出不确定,所以使用使用 do - while 和 break 来控制

相关文章
|
7月前
|
测试技术
【动态规划】【数组】1416. 恢复数组
【动态规划】【数组】1416. 恢复数组
|
7月前
leetcode2967. 使数组成为等数数组的最小代价
leetcode2967. 使数组成为等数数组的最小代价
57 0
|
7月前
|
算法 测试技术 C#
前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度
前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度
|
7月前
|
Java
每日一题《剑指offer》数组篇之调整数组顺序使奇数位于偶数前面
每日一题《剑指offer》数组篇之调整数组顺序使奇数位于偶数前面
66 0
每日一题《剑指offer》数组篇之调整数组顺序使奇数位于偶数前面
|
7月前
【每日一题Day157】LC1574删除最短的子数组使剩余数组有序 | 双指针 + 二分查找
【每日一题Day157】LC1574删除最短的子数组使剩余数组有序 | 双指针 + 二分查找
48 0
|
7月前
剑指Offer LeetCode 面试题21. 调整数组顺序使奇数位于偶数前面
剑指Offer LeetCode 面试题21. 调整数组顺序使奇数位于偶数前面
46 0
|
C语言
【Leetcode-1574.删除最短的子数组使剩余数组有序(C语言)】
【Leetcode-1574.删除最短的子数组使剩余数组有序(C语言)】
57 0
剑指Offer - 面试题21:调整数组顺序使奇数位于偶数前面
剑指Offer - 面试题21:调整数组顺序使奇数位于偶数前面
53 0
剑指offer_数组---把数组排成最小的数
剑指offer_数组---把数组排成最小的数
50 0
|
存储
第二期:链表经典例题(两数相加,删除链表倒数第N个节点,合并两个有序列表)
第二期:链表经典例题(两数相加,删除链表倒数第N个节点,合并两个有序列表)
91 0
下一篇
DataWorks