我正在学习链接列表,问题是-编写一个函数来打印给定链接列表的中间项(假设LL有奇数节点)。
方法1-遍历LL并使用计数器计算节点数。添加1(使其为偶数),并将计数器除以2(忽略差异的数学计算)。再过一遍LL,但这一次只到倒数第二项,然后返回.
void GetMiddleTermMethod1(){
//Count the number of nodes
int counter = 0;
Node n = FirstNode;
while (n.next != null){
a<=b在性能上是否与a<b相似,或者是两次。考虑以下三种情况:
for (int i =0; i <= 10; i++) {
// Some operations here
}
for (int i =0; (i < 10) OR (i == 10); i++) {
// Some operations here
}
for (int i =0; i <10; i++) {
// Some operations here
}
你会怎么比较这三个?
用Java编写的算法应该比用JRuby编写的算法快,对吧?
然而,如果我用Java语言编写算法,然后从JRuby调用它,我还能获得java的性能优势吗?
我之所以这样问,是因为我正在为我的JRuby on Rails应用程序编写一个非常复杂的实用程序类,并且需要选择是用Java语言还是用JRuby。
因此,如果我使用以下代码:
class UtilitySampleWrapper
include Java
require 'utility.jar' #could also use .js class files if that makes a difference
我在理解麻省理工学院开放课件讲座中指定的文本对齐问题的动态编程解决方案时遇到了困难。那堂课的一些笔记是的,我指的是笔记的第三页。
我认为动态编程意味着你记住了一些计算,这样你就不需要重新计算,从而节省了你的时间,但在讲座中给出的算法中,我看不到记忆化的任何用途,只是一大堆深度递归调用,即主函数是这样的:
DP[i] = min(badness (i, j) + DP[j] for j in range (i + 1, n + 1))
DP[n] = 0
其中,badness是一个函数,用于确定从行长中减去单词的长度后的未使用空间量。对我来说,这个算法似乎计算了所有可能的“坏”计算,并选择了最小