【题解 | 思维】三元组中心问题

三元组中心问题

注意点:

  1. 同一个位置的元素,不管以它为中心能组成多少个三元组,只记一个
  2. 不同索引位置的相同元素,算多个中心元素

常规暴力

java 复制代码
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int numbers[] = new int[n + 1];
		for (int i = 1; i < n + 1; i++) {
			numbers[i] = in.nextInt();
		}
		int ans = 0;
		int help[] = new int[n + 1];
		for (int i = 1; i < n + 1; i++) {
			for (int j = i + 1; j < n + 1; j++) {
				for (int k = j + 1; k < n + 1; k++) {
					if (numbers[i] < numbers[j] && numbers[j] < numbers[k]) {
						help[j] = 1;
					}
				}
			}
		}
		for (int j = 1; j < n + 1; j++) {
			if (help[j] != 0) {
				ans++;
			}
		}
		System.out.println(ans);
		in.close();
	}
}

Stream流

java 复制代码
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int[] numbers = new int[n];
		for (int i = 0; i < n; i++) {
			numbers[i] = in.nextInt();
		}
		int ans = 0;
		for (int i = 1; i < n; i++) {
			if (numbers[i] > Arrays.stream(numbers, 0, i).min().getAsInt()
			 && numbers[i] < Arrays.stream(numbers, i, n).max().getAsInt()) {
				ans++;
			}
		}
		System.out.println(ans);
		in.close();
	}
}

对数组numbers进行遍历,从第二个元素开始,到倒数第二个元素结束(因为作为递增三元组的中心,至少需要有一个元素在它的左边和右边)。

对于每个元素,检查它是否大于它左边的所有元素中的最小值 ,并且小于它右边的所有元素中的最大值。如果满足这两个条件,那么这个元素就可能作为递增三元组的中心,计数器ans增加1。

相关推荐
XuanRanDev3 小时前
【数据结构】树的基本:结点、度、高度与计算
数据结构
王老师青少年编程3 小时前
gesp(C++五级)(14)洛谷:B4071:[GESP202412 五级] 武器强化
开发语言·c++·算法·gesp·csp·信奥赛
DogDaoDao3 小时前
leetcode 面试经典 150 题:有效的括号
c++·算法·leetcode·面试··stack·有效的括号
空の鱼4 小时前
java开发,IDEA转战VSCODE配置(mac)
java·vscode
Coovally AI模型快速验证4 小时前
MMYOLO:打破单一模式限制,多模态目标检测的革命性突破!
人工智能·算法·yolo·目标检测·机器学习·计算机视觉·目标跟踪
P7进阶路4 小时前
Tomcat异常日志中文乱码怎么解决
java·tomcat·firefox
可为测控5 小时前
图像处理基础(4):高斯滤波器详解
人工智能·算法·计算机视觉
Milk夜雨5 小时前
头歌实训作业 算法设计与分析-贪心算法(第3关:活动安排问题)
算法·贪心算法
小丁爱养花5 小时前
Spring MVC:HTTP 请求的参数传递2.0
java·后端·spring
CodeClimb5 小时前
【华为OD-E卷 - 第k个排列 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od