我知道STL有set_difference,但我需要知道2 sets是否是不相交的.我已经分析了我的代码,这使我的应用程序放慢了很多.有没有一种简单的方法可以看出2套是不相交的,还是我只需要自己编写代码?
编辑:我也试过,set_intersection但它花了相同的时间......
你能在后视镜中使用反向引用吗?
假设我想split在我身后的任何地方重复两次角色.
String REGEX1 = "(?<=(.)\\1)"; // DOESN'T WORK!
String REGEX2 = "(?<=(?=(.)\\1)..)"; // WORKS!
System.out.println(java.util.Arrays.toString(
"Bazooka killed the poor aardvark (yummy!)"
.split(REGEX2)
)); // prints "[Bazoo, ka kill, ed the poo, r aa, rdvark (yumm, y!)]"
Run Code Online (Sandbox Code Playgroud)
使用REGEX2(其中反向引用嵌套在lookbehind中的前瞻)可以工作,但REGEX1在运行时会出现此错误:
Look-behind group does not have an obvious maximum length near index 8
(?<=(.)\1)
^
Run Code Online (Sandbox Code Playgroud)
这个排序是有意义的,我想,因为在一般的反向引用可以捕捉任何长度的字符串(如果正则表达式编译器是有点聪明,但是,它可以判断\1是(.)在这种情况下,因此具有有限的长度).
那么有没有办法在后视镜中使用反向引用?
如果没有,你可以使用这个嵌套的前瞻来解决它吗?还有其他常用技术吗?
我是SQL的新手,但是让我们说在StackExchange数据资源管理器上,我只想按声誉列出前15位用户,我写了这样的东西:
SELECT TOP 15
DisplayName, Id, Reputation, Reputation/1000 As RepInK
FROM
Users
WHERE
RepInK > 10
ORDER BY Reputation DESC
Run Code Online (Sandbox Code Playgroud)
目前这给出了一个Error: Invalid column name 'RepInK',我认为这是有道理的,因为RepInK它不是一个专栏Users.我可以通过说WHERE Reputation/1000 > 10,基本上重复公式来轻松解决这个问题.
所以问题是:
RepInK在WHERE条款中实际使用"列" 吗?
SELECT/WHERE查询?Reputation/1000,所以我只需要在几个地方重复这些名称而不是公式吗?
现在我有
private static void iterateall(BinaryTree foo) {
if(foo!= null){
System.out.println(foo.node);
iterateall(foo.left);
iterateall(foo.right);
}
}
Run Code Online (Sandbox Code Playgroud)
你能把它改成Iteration而不是递归吗?
继续使用Stack Exchange Data Explorer学习SQL的精神(参见:我们可以成为自己的"Northwind"用于教授SQL /数据库吗?),我决定尝试编写一个查询来回答一个简单的问题(在meta):什么%stackoverflow用户有超过10,000个代表?.
这就是我所做的:
SELECT COUNT(*)
FROM Users
WHERE
Users.Reputation >= 10000
Run Code Online (Sandbox Code Playgroud)
结果:
556
Run Code Online (Sandbox Code Playgroud)
SELECT COUNT(*)
FROM
USERS
Run Code Online (Sandbox Code Playgroud)
结果:
227691
Run Code Online (Sandbox Code Playgroud)
现在,我如何将它们组合成一个查询?这个查询成语叫什么?我需要写什么,所以我可以得到一个像这样的一行三列结果:
556 227691 0,00244190592
Run Code Online (Sandbox Code Playgroud) 考虑这对Throwable:
IllegalAccessExceptionextends Exception当应用程序尝试反射性地创建实例(数组除外),设置或获取字段或调用方法时抛出,但当前正在执行的方法无法访问指定类,字段,方法或构造函数的定义.
IllegalAccessErrorext IncompatibleClassChangeError ext LinkageError ext Error如果应用程序尝试访问或修改字段,或调用其无权访问的方法,则抛出该异常.
通常,编译器会捕获此错误; 如果类的定义发生了不兼容的更改,则此错误只能在运行时发生.
XXXError和XXXException组合吗?这些对是如何相互关联的?try对catch一Exception/Error对,你还应该catch另一个吗?获取字符串的子字符串是一种非常常见的字符串操作操作,但我听说Java和.NET平台之间的性能/实现可能存在很大差异.具体来说,我听说在Java中,java.lang.String提供恒定时间操作substring,但在.NET中,System.String提供线性性能Substring.
这些真的是这样吗?可以在文档/源代码等中确认吗?此实现是特定的,还是由语言和/或平台指定的?每种方法的优缺点是什么?一个人从一个平台迁移到另一个平台应该寻找什么来避免陷入任何性能陷阱?
我正在训练像UvA这样的代码问题,我有这个问题,我必须考虑一组n个考试和k 个参加考试的学生,找出是否可以在两个时间段安排所有考试.
输入 几个测试用例.每一个都以一行包含1 <n <200个不同的考试来开始.第2行具有案例k的数量,其中至少有1名学生参加2次考试.然后,将跟随k行,每行包含2个数字,用于指定上述每个案例的一对检查.(n = 0的输入表示输入结束,不进行处理).
输出: 您必须决定是否可以在2个时段进行检查计划.
例:
输入:
3
3
0 1
1 2
2 0
9
8
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0
Run Code Online (Sandbox Code Playgroud)
输出继电器:
NOT POSSIBLE.
POSSIBLE.
Run Code Online (Sandbox Code Playgroud)
我认为一般的方法是图形着色,但我真的是一个新手,我可能会承认我在理解问题时遇到了一些麻烦.无论如何,我正在努力做到然后提交它.有人可以帮我为这个问题做一些代码吗?我现在必须处理和理解这个算法,以便以后一遍又一遍地使用它.
我更喜欢C或C++,但如果你愿意,Java对我来说很好;)
提前致谢
浮点值是不精确的,这就是为什么我们应该很少在比较中使用严格的数字相等.例如,在Java中打印false(如ideone.com上所示):
System.out.println(.1 + .2 == .3);
// false
Run Code Online (Sandbox Code Playgroud)
通常,比较浮点计算结果的正确方法是查看某些预期值的绝对差值是否小于某个容许的epsilon.
System.out.println(Math.abs(.1 + .2 - .3) < .00000000000001);
// true
Run Code Online (Sandbox Code Playgroud)
问题是某些操作是否可以产生确切的结果.我们知道,任何非有限浮点值x(即要么NaN或无穷大),x - x是ALWAYS NaN.
但如果x是有限的,这是否有保证?
x * -1 == -xx - x == 0(特别是我对Java行为最感兴趣,但也欢迎其他语言的讨论.)
对于它的价值,我认为(我可能在这里错了)答案是肯定的!我认为这归结为是否对于任何有限的IEEE-754浮点值,其加法逆是总是可计算的.由于例如float并且double只有一个专用位用于符号,这似乎是这种情况,因为它只需要翻转符号位来找到加法逆(即有效数应保持不变).
language-agnostic floating-point precision ieee-754 signedness
java ×6
algorithm ×3
c++ ×3
sql ×2
.net ×1
binary-tree ×1
count ×1
graph ×1
ieee-754 ×1
lookbehind ×1
operators ×1
performance ×1
precision ×1
recursion ×1
regex ×1
signedness ×1
statistics ×1
stl ×1
string ×1
substring ×1
traversal ×1
where-clause ×1