题目描述
现在给出一个长度为n的数组,计算整型数组中最小和最大元素下标,如果有多个相同极值元素,返回最小下标
输入格式
输入共两行
第一行一个整数n,代表数组的长度
第二行n个数,表示数组
输出格式
输出共一行两个数,分别代表最大值和最小值的下标
输入输出样例
输入 #1 复制
8
2 4 4 5 7 8 8 2
输出 #1 复制
6 1
说明/提示
1≤n≤100000000
1≤a[i]≤100000000
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
void Arraylist(long long *p,long long n,long long *p1,long long *p2);
long long n,max_index,min_index;
cin>>n;
long long *p = new long long[n];
for(long long i=0;i<n;i++){
cin>>p[i];
}
Arraylist(p,n,&max_index,&min_index);
cout<<max_index<<" "<<min_index;
return 0;
}
void Arraylist(long long *p,long long n,long long *p1,long long *p2){
*p1 = 1;
*p2 = 1;
long long max = p[0];
long long min = p[0];
for(long long i=1;i<n;i++){
if(p[i] > max ){
*p1 = i + 1;
max = p[i];
}
if(p[i] < min){
*p2 = i + 1;
min = p[i];
}
}
}
Java题解:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int Array[] = new int[n];
for (int i = 0; i < n; i++) {
Array[i] = scanner.nextInt();
}
int max,min,index_max,index_min;
max = min = Array[0];
index_max = index_min = 0;
for (int i = 1; i < n; i++) {
if(max < Array[i]){
max = Array[i];
index_max = i;
}
if(Array[i] < min){
min = Array[i];
index_min = i;
}
}
index_max++;
index_min++;
System.out.println(index_max+" "+index_min);
}
}