首页 > 其他分享 >数组扩容

数组扩容

时间:2024-11-30 15:22:20浏览次数:8  
标签:扩容 arr int System length 数组 arrNew

一、思路:
新建一个数组,将以前的数组值依次放入新数组中,在新数组中添加元素;
让以前数组等于新数组,以前数组的数据空间销毁;
数组反转同理
二、要求:实现动态的给数组添加元素效果,实现对数组扩容。ArrayAdd.java
1.原始数组使用静态分配 int[]arr={1,2,3}
2.增加的元素4,直接放在数组的最后 arr={1,2,3,4}
3.用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n
三、思路分析

  1. 定义初始数组 int[]arr={1,2,3}//下标 0-2
  2. 定义一个新的数组 int[]arrNew=newint[arr.length+1];
  3. 遍历 arr 数组,依次将arr的元素拷贝到 arrNew数组
  4. 将 4 赋给 arrNew[arrNew.length- 1] = 4;把 4 赋给arrNew 最后一个元素
  5. 让 arr 指向 arrNew; arr=arrNew; 那么 原来arr数组就被销毁
  6. 创建一个 Scanner可以接受用户输入
  7. 因为用户什么时候退出,不确定,用 do-while+break来控制
    四、代码实现:
package com.example;

import java.util.Scanner;

public class shuzukuorong {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = {1, 2, 3};
        do{
        //新建数组
        int[] newarr = new int[arr.length + 1];
        //存入数据
        for (int i = 0; i < arr.length; i++) {
            newarr[i] = arr[i];
        }
        System.out.print("请输入要扩容的元素:");
        newarr[arr.length] = sc.nextInt();
        //让arr指向newarr
        arr = newarr;
        System.out.println("======arr扩容后元素情况=====");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        //问用户是否继续
        System.out.println("是否继续添加y/n");
        char y = sc.next().charAt(0);
        if (y == 'n') {
            break;
        }
    }while(true);
        System.out.println("你退出了添加...");
    }
}
在编写代码的过程中,我用到了do-while循环,增进了理解;
在一步步的测试中,我逐步按要求完善代码,体现了面向对象的编程思想。

标签:扩容,arr,int,System,length,数组,arrNew
From: https://www.cnblogs.com/fanxn/p/18577370

相关文章

  • 泛型数组与hashmap
    5.3泛型数组列表5.3.1访问数组元素列表基本类型和包装类是等价的可以用int接受Integer的importjava.util.*;publicclasstext1{publicstaticvoidmain(String[]args)throwsException{String[]arr=newString[100];//长度定死ArrayList<S......
  • 【C++算法】21.二分查找算法_山脉数组的峰顶索引
    文章目录题目链接:题目描述:解法C++算法代码:图解题目链接:852.山脉数组的峰顶索引题目描述:解法暴力解法:若:arr=[0,1,2,3,2,1,0]可以定义一个指针指向第一个元素,如果它后面的元素比它大,那么他就不是峰值。当第一次遇到一个数是大于后面那个数的时候,那个数就......
  • leetcode 1909. 删除一个元素使数组严格递增
    1909.删除一个元素使数组严格递增题解的做法都太复杂了,我的可能好理解一些classSolution{public:boolcanBeIncreasing(vector<int>&nums){intsize=nums.size();if(size==2)returntrue;boolisDown=false;//isDown表示是否出......
  • 结构体 班级版2(结构体)【一维数组】
    #include<iostream>usingnamespacestd;structst{stringst_name;intst_age;};structc1{stringcl_name;stst1[7];stst2[7];};structa1{c1st1[100];};intmain(){c1a[100];cin>>a[0].cl_name;......
  • 从一个无序的整数数组中,找出最小和最大数之间缺失的数字,要求最小的时间复杂度
    要找到无序整数数组中最小值和最大值之间缺失的数字,并保证最小的时间复杂度,可以使用以下方法:1.使用集合(Set)这是最简洁且时间复杂度较低的方法,时间复杂度为O(n),空间复杂度也是O(n)。functionfindMissingNumbers(arr){if(!arr||arr.length<2){return[];/......
  • 2024-11-30:质数的最大距离。用go语言,给定一个整数数组 nums,请找出两个(可以是相同的)质
    2024-11-30:质数的最大距离。用go语言,给定一个整数数组nums,请找出两个(可以是相同的)质数在该数组中的下标之间的最大距离。提示:nums的长度在[1,3*10^5]之间。nums的每个元素的值在[1,100]。输入保证nums中至少有一个质数。输入:nums=[4,2,9,5,3]。输出:3。解释:nums[1]......
  • 写一个方法从数组中随机抽取N个不重复的元素
    /***从数组中随机抽取N个不重复的元素*@param{Array}arr原数组*@param{number}n要抽取的元素个数*@returns{Array}包含n个不重复元素的新数组,如果n大于数组长度,返回打乱顺序的原数组*/functiongetRandomElements(arr,n){if(n>=arr.length){......
  • 遍历数组和对象的方法都有哪些?
    在前端开发中,遍历数组和对象的方法有很多,以下是常用的几种,并分别针对数组和对象进行说明:数组遍历:for循环:最基本的循环方式,可以完全控制循环的起始、结束和步长。constarr=[1,2,3,4,5];for(leti=0;i<arr.length;i++){console.log(arr[i]);}for.......
  • C语言实现数组堆并解决TopK问题
    还是先定义结构体typedefintHPDataType;typedefstruct{HPDataType*array;intsize;intcapacity;}HP;voidHeapInit(HP*php){assert(php);php->array=NULL;php->capacity=php->size=0;}首先是它的初始化。voidHeapDestroy......
  • MarsCode青训营序章Day1|稀土掘金-1.找单独的数、47.完美偶数计数、3.数组字符格式化
    稀土掘金-1.找单独的数(1.找单独的数)题目分析:n个同学每人持有1张写有数字的卡片,除了一个数字之外,其他每个数字均出现了刚好2次,要求设计时间复杂度为O(n)的算法从cards数组中查找该单独的数。题目重点:已知除单独的数外,其余的都是成对的数,则不存在重复次数超过2的数。需要使时......