Iterable<Board> theNeighbors = new ArrayList<Board>();
Run Code Online (Sandbox Code Playgroud)
这是我对ArrayListtheNeighbors的初始化,它使用了interafce Iterable进行声明.但是,当我使用方法add()来构建我刚刚构建的变量时,编译器会发出警报
Board.java:78:错误:找不到符号theNeighbors.add(nb); ^
符号:方法添加(Board)
位置:变量类型Iterable的邻居
是什么让它发生?在我使用的另一种情况
List<Board> theNeighbors = new ArrayList<Board>();
Run Code Online (Sandbox Code Playgroud)
该add()方法效果很好.您为声明选择的界面是否应始终具有您稍后要调用的方法?
给定一个整数数组,除了一个元素外,每个元素都会出现两次.找一个单一的.
注意:您的算法应具有线性运行时复杂性.你能不用额外的内存来实现吗?
class Solution:
# @param {integer[]} nums
# @return {integer}
def singleNumber(self, nums):
prev = []
for i,j in enumerate(nums):
if j in prev:
nums[i] = -j
else:
prev.append(j)
return sum(nums)
Run Code Online (Sandbox Code Playgroud)
这是来自leetcode的问题,实际上是AC率最高的问题.但是,正如我的代码所说,它告诉我时间限制已超出并且无法被接受.任何人都可以分析我的代码,包括复杂性吗?非常感谢.
Upadate:谢谢大家,我已将"prev"从列表更改为一组,这很好用!
class Solution:
# @param {integer[]} nums
# @return {integer}
def singleNumber(self, nums):
prev = set([])
for i,j in enumerate(nums):
if j in prev:
nums[i] = -j
else:
prev.add(j)
return sum(nums)
Run Code Online (Sandbox Code Playgroud)
但是,正如问题所描述的那样,我仍在寻找不需要额外记忆的解决方案.
更新:我使用另一种方法尝试解决问题,但再次收到超时时间.
class Solution:
# @param {integer[]} nums
# @return {integer}
def singleNumber(self, nums):
for i,j …Run Code Online (Sandbox Code Playgroud) 我在https://leetcode.com/discuss/37282/simple-python-recursive-solution-bfs-on-80ms看到这段代码
这是答案
给定二叉树,找到它的最小深度.
最小深度是从根到最短路径的节点数
节点向下到最近的叶节点.
class Solution:
# @param {TreeNode} root
# @return {integer}
def minDepth(self, root):
if not root:
return 0
nodes = [(root, 1)]
while nodes:
node, curDepth = nodes.pop(0)
if node.left is None and node.right is None:
return curDepth
if node.left:
nodes.append((node.left, curDepth + 1))
if node.right:
nodes.append((node.right, curDepth + 1))
Run Code Online (Sandbox Code Playgroud)
所以我的困惑是,节点1是否有节点2和节点3作为其.left和.right子节点,因此堆栈将是[(节点2,someDepth),(节点3 someDepth)].然后,由于堆栈将仅弹出列表的最后一个元素,然后(节点3 someDepth)将被解包,而节点2被完全忽略.那么,如果节点2没有子节点,而节点3有,那么使用节点3进行后续迭代是不是错了?
public class 1127
{
public static void main(String[] args)
{
binomial();
}
public static double binomial(int N, int k, double p)
{
if (N == 0 && k ==0) return 1.0;
if (N < 0 || k < 0) return 0.0;
return (1.0 - p)*binomial(N-1, k, p) + p*binomial(N-1, k-1, p);
}
}
Run Code Online (Sandbox Code Playgroud)
/ Volumes/2/Learn_Algorithms /第一章/ 1127.java:13:解析时到达文件末尾}}
小心点无法识别^ 15错误
这是我第一次编写Java代码,我有几个问题.
我不认为我错过任何'{'或'}'
然后那些SUBNULNULNUL系列......怎么样?
它是如何计算15个错误的?
public class Planet {
double x;
double y;
double xV;
double yV;
double mass;
double imgName;
public Planet (double x; double y; double xV; double y; double mass; double imgName;) {
this.x = x;
this.y = y;
this.xV = xV;
this.yV = yV;
this.mass = mass;
this.imgName = imgName;
}
public static void main(String[] args) {
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
Planet.java:8:')'预计
Planet.java:8:非法启动类型
Planet.java:8:';' 预期
Planet.java:9:非法启动类型
Planet.java:9:预料到
Planet.java:9:';' 预期
Planet.java:9:非法启动类型
...
Planet.java:16:类,接口或枚举期望public static void main(String [] args)
Planet.java:18:class,interface或enum expected}
我看到不同类型的错误!任何人都可以一个一个地向我解释,因为它太烦人了.
这是我的java代码(我知道的一种可怕的暴力算法,这是要求).我想我j在任何引用之前已经在for循环中初始化了变量,但是当我运行编译器警报时.
import java.util.Arrays;
public class Brute {
public static void main(String[] args) {
String filename = "./collinear/input" + args[0] + ".txt";
In f = new In(filename);
int N = f.readInt();
Point[] points = new Point[N];
int x, y;
StdDraw.setScale(-10000, 50000);
for(int i = 0; i < N; i++) {
x = f.readInt();
y = f.readInt();
points[i] = new Point(x, y);
points[i].draw();
}
Arrays.sort(points);
int i, j, k, l;
for(i = 0; i < N; i++)
for(j = 0; …Run Code Online (Sandbox Code Playgroud)