[ByteDance] 无序数组中找出所有满足要求的K

  • Post author:
  • Post category:其他


题目描述


求数组中比左边元素都大同时比右边元素都小的元素,返回这些元素的索引。

要求时间复杂度 O(N)。


输入:[2, 3, 1, 8, 9, 20, 12]


输出:3, 4


解释:数组中 8, 9 满足题目要求,他们的索引分别是 3、4


方法一:

最简单的思路是遍历数组,对于每个元素分别往前、往后遍历一下,看看是否它是否满足条件。

for(int i = 0; i < n; i ++) {
  for(int j = 0; j < i; j ++) {
    //左侧是否都比它小
  }
  for(int k = j + 1; k < n; k ++) {
    //右侧是否都比它大
  }
  //若两条件均满足则记录下来
}
import java.util.*;

public class Main_findKGreatLeftLessRight {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 暴力求解
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt(); // 元素个数
		int[] nums = new int[n];
		for(int i = 0; i &l



版权声明:本文为qq_34176797原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。