我们需要打印数组中存在的所有leaders。如果元素大于元素的右侧,则元素是领导者。
例如:
arr[]={14, 12, 70, 15, 99, 65, 21, 90}
Here 99 and 90 are leader elements
使用两个循环。外循环迭代数组元素,内循环检查数组的正确元素。如果当前元素大于右侧元素,则它是leaders。
java代码:
public static void findLeadersInAnArrayBruteForce(int arr[])
{
System.out.println("Finding leaders in an array using brute force : ");
for (int i = 0; i < arr.length; i++) {
boolean isLeader=true;
for (int j = i+1; j < arr.length; j++) {
if(arr[i] <= arr[j])
{
isLeader=false;
break;
}
}
if(isLeader)
System.out.print(arr[i]+" ");
}
}
时间复杂度:o(N^2)
解决方案2:
让我们找到更优化的解决方案
我们将使用最右边的元素始终是leaders的属性。
我们将从最右边的元素开始并跟踪最大值。
每当我们获得新的最大值时,该元素就是leaders。
java代码:
public static void findLeadersInAnArray(int arr[])
{
System.out.println("Finding leaders in an array : ");
int rightMax=arr[arr.length-1];
// Rightmost will always be a leader
System.out.print(rightMax+" ");
for (int i = arr.length-2; i>=0; i--) {
if(arr[i] > rightMax)
{
rightMax=arr[i];
System.out.print(" "+rightMax);
}
}
}
时间复杂度:o(N)
在数组中查找leaders的 Java 程序:
package org.arpit.java2blog;
public class FindLeadersInArrayMain {
public static void main(String[] args) {
int arr[]={14, 12, 70, 15, 99, 65, 21, 90};
findLeadersInAnArrayBruteForce(arr);
System.out.println("n==================");
findLeadersInAnArray(arr);
}
public static void findLeadersInAnArrayBruteForce(int arr[])
{
System.out.println("Finding leaders in an array using brute force : ");
for (int i = 0; i < arr.length; i++) {
boolean isLeader=true;
for (int j = i+1; j < arr.length; j++) {
if(arr[i] <= arr[j])
{
isLeader=false;
break;
}
}
if(isLeader)
System.out.print(arr[i]+" ");
}
}
public static void findLeadersInAnArray(int arr[])
{
System.out.println("Finding leaders in an array : ");
int rightMax=arr[arr.length-1];
// Rightmost will always be a leader
System.out.print(rightMax+" ");
for (int i = arr.length-2; i>=0; i--) {
if(arr[i] > rightMax)
{
rightMax=arr[i];
System.out.print(" "+rightMax);
}
}
}
}
当你运行上面的程序时,你会得到以下输出:
Finding leaders in an array using brute force
99 90
==================
Finding leaders in an array :
90 99
问题内容: 我有一个看起来像这样的表: 还有其他几列与此问题无关。将它们存储为JSON是有原因的。 我要尝试的是查找具有特定 艺术家姓名 (精确匹配)的曲目。 我正在使用此查询: 例如 但是,这会进行全表扫描,而且速度不是很快。我尝试使用function创建一个GIN索引,并使用,但是未使用该索引,查询实际上要慢得多。 问题答案: 在Postgres 9.4+ 使用新的二进制JSON数据类型 ,P
程序员经常要处理数组中存放的大量数据,可能需要确定数组是否包含符合某关键值(key value)的值。寻找数组中某个元素的过程称为查找(searching)。本节介绍两个查找方法:简单的线性查找(liner search)方法和更复杂的折半查找(binary search)方法。练习4.33和练习4.34要求用递归法实现线性查找与折半查找。 图4.19 的线性查找比较数组中每个元素与查找键(sea
如果我从问题中选择“q1”,我如何从答案中选择第一个数组? 这是我现在的代码:
对于这个任务,我认为我做对了,但是当我在网上提交时,即使我用Eclipse检查过,它也没有把它列为正确的。 提示: 写一个方法isPalinene,它接受一个Strings数组作为它的参数,如果该数组是回文(如果它向前读取和向后读取相同),则返回true,如果不是,则返回 /false。例如,数组{"alpha"、"beta"、"gamma"、"delta"、"gamma"、"beta"、"alp
问题内容: 我有一个看起来像这样的表: 还有其他几列与此问题无关。将它们存储为JSON是有原因的。 我想做的是查找具有特定 艺术家姓名 (精确匹配)的曲目。 我正在使用此查询: 例如 但是,这会进行全表扫描,而且速度不是很快。我尝试使用function创建一个GIN索引,并使用,但是未使用该索引,查询实际上要慢得多。 问题答案: 在Postgres 9.4+ 使用新的二进制JSON数据类型 ,Po
我有一张这样的桌子: 还有其他几个专栏与这个问题无关。将它们存储为JSON是有原因的。 我想做的是查找一首具有特定艺术家名称(精确匹配)的曲目。 我正在使用此查询: 举个例子 但是,这会进行全表扫描,而且速度不是很快。我尝试使用函数创建GIN索引,并使用,但是没有使用索引并且查询实际上显着变慢。