gpt4 book ai didi

java - 在java中创建优先级队列会出错

转载 作者:行者123 更新时间:2023-11-30 03:00:03 25 4
gpt4 key购买 nike

我正在尝试一个使用优先级队列的程序。当我将优先级队列设置为私有(private)时,我收到一条错误消息

KthSmallestPQ.java:8: error: illegal start of expression
private PriorityQueue<MatrixElement> queue = new PriorityQueue<MatrixElement>(a[0].length, new Comparator<MatrixElement>() {
^

当我删除 private 时,代码会编译并运行。有人可以解释为什么将 PQ 设为私有(private)会出错吗?

这是有效的代码:

import java.util.*;

class KthSmallestPQ {
public static int findKthLow(int[][] a, int k) {
if(k < 0 || k >= a.length * a[0].length)
return Integer.MAX_VALUE;

PriorityQueue<MatrixElement> queue = new PriorityQueue<MatrixElement>(a[0].length, new Comparator<MatrixElement>() {
public int compare(MatrixElement first, MatrixElement second) {
return first.value - second.value;
}
});

for(int i = 0; i < a[0].length; i++)
queue.add(new MatrixElement(a[0][i], 0, i));

MatrixElement lowest = null;

for(int i = 0; i < k; i++) {
lowest = queue.remove();

// add element from the next row of same column to the priority queue
int row = lowest.row + 1;
int col = lowest.col;

if(row < a.length)
queue.add(new MatrixElement(a[row][col], row, col));
else
queue.add(new MatrixElement(Integer.MAX_VALUE, row, col));
}

return lowest.value;
}

public static void main(String[] args) {
int[][] matrix = {{10, 20, 30, 40},
{15, 25, 35, 45},
{24, 29, 37, 48},
{32, 33, 39, 50}};

int k = 6;
System.out.println(k + "th smallest value is: " + findKthLow(matrix, k));
}
}
class MatrixElement {
int value;
int row;
int col;

MatrixElement(int value, int row, int col) {
this.value = value;
this.col = col;
this.row = row;
}
}

最佳答案

您不能在局部变量上使用访问说明符。您在此处创建的变量queue是局部变量。

关于java - 在java中创建优先级队列会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36234565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com