下面是在数组中找到第k个最小数字的java代码。 此代码适用于基本版本,不使用pivot-index。
class Func {
int kthSmallest(int arr[], int smallestIndex, int size){
int smallest = arr[0];
int removeLocation=0;
for(int i=0; i<size; i++){
if(arr[i] < smallest){
smallest = arr[i];
removeLocation = i;
}
}
for(int i=removeLocation; i<size; i++){
arr[i] = arr[i+1];
}
if(smallestIndex == 1) {
return smallest;
} else return kthSmallest(arr, smallestIndex-1, size-1);
}
}
public class Test {
public static void main(String[] args){
Func test = new Func();
int number = test.kthSmallest(new int[]{3,1,2,4,5}, 2, 5);
System.out.println(number);
}
}
结果是
线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:5
我无法找到错误发生的地方。
答案 0 :(得分:1)
在第二个for循环中,您通过i + 1修改超出范围,如下所示
WebElement radioMonthly = driver.findElement(By.xpath("//*
[@id=\"dateFromTo_date_format_2\"]"));
Actions actions = new Actions(driver);
actions.moveToElement(radioMonthly).click().perform();
for(int i=removeLocation; i<size-1; i++){
arr[i] = arr[i+1];
}