满足条件的(i,j)的数量
📆**Date:** 2023年1月5日
✒️**Author:** SmartBoy
📓**Classify: 蓝桥杯每日一题**
🔖Language: Java
✨题目描述:
给你一个长度为n的序列,请输出满足以下条件的(i,j)的数量
- 1<=i<j<=n
- min(ai,aj) = i
- max(ai,aj) = j
输入格式:
第一行一个正整数n(n>=2)
第二行包含n个正整数ai(1<=ai<=n)
输出格式:
一个正整数表示答案
- 样例输入1:
4 1 3 2 4
- 样例输出1:
2
- 样例输入2:
10 5 8 2 2 1 6 7 2 9 10
- 样例输出2:
8
🎉解题思路:
根据题意(i,j)的要求,先用两个for循环确定i和j的范围,在这个范围内判断max和min条件,运用Math中的方法(需要注意i和j的范围,不是从0开始的,需要 - 1),若为符合题目要求,则count++,输出count即为答案。
🥇Java源码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] a = new int[n]; int count = 0; // 输入n个正整数ai for (int i = 0; i < n; i++) { a[i] = sc.nextInt(); } for (int i = 1; i < n+1; i++) { for (int j = i+1; j < n+1; j++) { if (Math.min(a[i-1],a[j-1]) == i && Math.max(a[i-1],a[j-1]) == j){ count++; } } } System.out.println(count); } }
📧Summary
虽然但是给了TLE,想不到优化的方法,欢迎友友评论给出优化方法🤗。