蓝桥杯 算法训练 删除数组零元素

tech2022-08-18  140

问题描述

从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。输出删除后数组中元素的个数并依次输出数组元素。

样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以空格隔开的5个整数) 5 3 4 0 0 2 样例输出: (输出格式说明:3为非零数据的个数,3 4 2 是以空格隔开的3个非零整数) 3 3 4 2

样例输入: 7 0 0 7 0 0 9 0 样例输出: 2 7 9

样例输入: 3 0 0 0 样例输出: 0

解题思路: 个人没有按上边说法 编写函数CompactIntegers来操作,我是直接在输入数字的时候判断这个数字是否是 0 ,不是零就添加到创建好的动态数组中,最后输出这个动态数组的长度和其中的元素得出结果。

import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class 删除数组零元素 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 输入数据的个数 int n = sc.nextInt(); // 创建一个动态数组 List<Integer> list = new ArrayList<Integer>(); //输入的数据不是0就添加到动态数组中 for (int i = 0; i < n; i++) { int temp = sc.nextInt(); if(temp != 0){ list.add(temp); } } // 输出长度和数据 System.out.println(list.size()); for (Integer integer : list) { System.out.print(integer+" "); } } }
最新回复(0)