在给定的数组中,我想计算左边唯一的连续值,这些值小于或等于每个值。
例如在下面的数组中,第一个索引值是100,所以没有比它更小的值,它将是1。对于值70,有60比它小,所以计数是2,依此类推。
注意:这应该使用stack来完成(这是一个stack实践问题)。
我的方法是:
我试图用这种方式解决:
问题:现在的问题是:因为堆栈。pop()
它第一次会正常工作,但下一次不会。
问:我的问题是,如果没有stack.pop()
,我如何循环遍历堆栈?
代码:以下是我正在尝试的:
public static int[] getStockSpan(int[] prices) {
int[] arr = new int[prices.length];
Stack<Integer> stack = new Stack<>();
for ( int i = 0; i < prices.length; i++ ) {
if ( stack.size() == 0 ) {
arr[0] = 1;
} else {
if ( stack.peek() > prices[i] ) {
arr[i] = 1;
} else {
int count = 1;
while ( stack.size() > 0 && stack.peek() <= prices[i] ) {
count++;
stack.pop();
}
arr[i] = count;
}
}
stack.push(prices[i]);
}
return arr;
}
在java中导入以下内容:
import java.util.*;
import java.util.Stack;
然后用以下代码替换代码:
public static int[] getStockSpan(int[] prices) {
int[] arr = new int[prices.length];
Stack<Integer> stack = new Stack<>();
for ( int i = 0; i < prices.length; i++ ) {
if ( stack.size() == 0 ) {
arr[0] = 1;
} else {
if ( stack.peek() > prices[i] ) {
arr[i] = 1;
} else {
int count = 1,t=0;
Iterator iter=stack.iterator();
int ia[]=new int[prices.length];
while ( iter.hasNext() ) {
Integer k= (Integer)iter.next();
ia[t++]=k.intValue();
}
for(int j=t-1;j>=0;j--)
{
if(ia[j] <= prices[i])
count++;
else
break;
}
arr[i] = count;
}
}
stack.push(prices[i]);
}
return arr;
}
问题内容: 我正在尝试将使用OpenCV收到的先前答案中的C++方法转换为使用OpenCV Java绑定的Java C ++代码: 我不知道如何像在C代码中那样遍历变量。以下是到目前为止我得到的: Java代码: 我经历了API,似乎确实有获取方法,但是我什么也不能调用。 问题答案: 如果确实是 灰色 ,则可能是以下类型: 我没有设置环境来测试此代码。有关更多信息,请检查此线程。 如果您使用的是
问题内容: 我正在尝试遍历以下内容 我到目前为止所得到的: 有任何想法吗? 问题答案: 在您的代码中,元素是JSON对象的数组,而不是JSON对象本身。元件,和是JSON的一部分内部对象JSON阵列。 您需要遍历数组 版画 我不知道您的代码片段来自何处。
我试图通过将ajax请求中的for循环的值发送到php文件来检查数据库中的值,“each value in request”,然后文件返回变量“avl”,如果不是,则不可用。 问题是,我检查了一个值流,它们都必须返回才能继续我的过程,但条件不会等到for循环结束才进行检查。它在for循环启动之前检查条件,即使代码也不是那样的。例如:在for循环在第50行结束之前,它在第100行执行条件。 它总是通
问题内容: 因此,我以为我可以像普通对象一样遍历localStorage,因为它具有长度。我该如何循环? 如果我这样做,则返回正确。所以我认为循环会起作用。 我在想类似的东西: 但无济于事。有任何想法吗? 我的另一个想法是 在其中工作。 问题答案: 您可以使用该方法。 返回第一个键(顺序是实现定义的,但是在您添加或删除键之前是恒定的)。 如果顺序很重要,则可以存储JSON序列化数组: 规范草案声称
问题内容: 我有一个具有1 2 3 4 5值的数组。 现在我想以循环方式遍历它。像我想打印2 3 4 5 1或3 4 5 1 2或5 1 2 3 4等等。有什么 算法 吗? 编辑: 我想以循环方式打印所有组合。我不想在初始阶段说明起点。 问题答案: (如果要从向下迭代数组,请在数组下标表达式中更改为。) 我应该注意,就执行速度而言,这可能不是表达循环的最有效方法。但是,差异很小,并且 很可能无关紧
问题内容: 我正在尝试编译以下代码: 我在for行中看到一条错误消息: 该方法返回一个(但在这种情况下,返回的结构)。 是我为应用程序创建的枚举(在另一个类文件-中)。 当我在中创建具有相同结构的foreach循环时,我没有遇到此问题。 我究竟做错了什么? 问题答案: 一种更有效的方法: 如果有可能,请定义“ getData”,以便您不需要强制转换。