蓝桥杯算法训练-数组查找及替换问题(Java语言)
2019-08-07 本文已影响0人
XHHP
<font size="5px" color="#87CEFA" >描述</font>
给定某整数数组和某一整数b。要求删除数组中可以被b整除的所有元素,同时将该数组各元素按从小到大排序。如果数组元素数值在A到Z的ASCII之间,替换为对应字母。元素个数不超过100,b在1至100之间。
****<font size="5px" color="#87CEFA" >输入</font>****
输入描述:
第一行为数组元素个数和整数b
第二行为数组各个元素
输入样例:
****<font size="5px" color="#87CEFA" >输出</font>****
输出描述:
按照要求输出
输出样例:
****<font size="5px" color="#87CEFA" >思路分析</font>****
这道题首先按照题目要求进行输入,并初始化数组。之后调用函数,进行循环遍历是否能被n整除,如果不能整除,则将其剔除,将其置为-1。用变量c记录数组中元素值不为-1的数目。然后调用排序算法对数组进行排序。最后循环遍历是否位于A~Z区间内,并输出结果。
import java.util.Arrays;
import java.util.Scanner;
public class lanqiao1110 {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int num = reader.nextInt(); // 按题目要求创建输入
int n = reader.nextInt();
if (num > 0) {
int[] arr = new int[num]; // 建立对应的数组
for (int i = 0; i < num; i++) {
arr[i] = reader.nextInt();
}
lanqiao_1110(arr, n); //调用函数
}
}
public static void lanqiao_1110(int[] arr, int k) {
int c = arr.length; //获取数组的长度
for (int i = 0; i < arr.length; i++) { //循环遍历查看是否能被k整除,并剔除
if (arr[i] % k == 0) {
arr[i] = -1;
c--;
}
}
Arrays.sort(arr); //进行从小到大排序
for (int i = arr.length - c; i < arr.length; i++) { //循环遍历输出结果
if (arr[i] >= 'A' && arr[i] <= 'Z') {
System.out.print((char) arr[i] + " ");
} else {
System.out.print(arr[i] + " ");
}
}
}
}