草庐IT

algorithm

全部标签

java - 右移在 -1 上执行除以 2

我知道我可以使用右移执行除以2。为简单起见,取一个4位数字系统-1-1111-2-1110-3-1101-4-1100-5-1011-6-1010-7-1001-8-10007-01116-01105-01014-01003-00112-00101-00010-0000如果我尝试执行6/2=0110>>1=0011=3-6/2=1010>>1=1101=-3对+ve和-ve数字都有效然而,当来到11/2=0001>>1=0000=0-1/2=1111>>1=1111=-1-1似乎有一个特殊情况,右移然后将其移动到负无穷大。目前,我需要为此添加一个特殊的if检查,因为我期望-1/2=0。

java - java中多线程构造不可变树的算法

我想构建一个不可变树数据结构,表示文件系统目录结构的任意子集。通常会有一个知道包含/排除的过滤器,我基本上希望在构造中有一些线程支持。这听起来像是我自己编写代码的纯粹Nerd乐趣,但我实际上想知道是否有关于此主题的任何好的示例、文本或类似内容?源代码很好;) 最佳答案 这本书有所有的答案:http://www.amazon.co.uk/Purely-Functional-Structures-Chris-Okasaki/dp/0521663504 关于java-java中多线程构造不可变

java - 找到两个不重叠的回文子序列的最大乘积

我试图找到字符串s的两个非重叠回文子序列的最大乘积,我们将其称为a和b。我想出了下面的代码,但它没有给出正确的输出:publicstaticintmax(Strings){int[][]dp=newint[s.length()][s.length()];for(inti=s.length()-1;i>=0;i--){dp[i][i]=1;for(intj=i+1;j对于输入字符串“acdamppomp”,我们可以选择a="aca"和b="pmpmp"来获得分数的最大乘积3*5=15.但我的程序输出为5。 最佳答案 首先你应该遍历dp

java - 计算一个数字被打开一本书的概率的算法

我有一本N“组合级别”可能会有所不同:从简单的数字求和(事件p.234对于x=9为真),到加减组合直至数字对[事件p.124为真对于x=1,2,3(4-1),4,5(4+1),6(2+4),7(1+2+4),8(12-4),12,14,16(14+2),23(24-1),24,25(24+1)]首先要注意的是,如果你打开一本书,你总是会看到第n页和第n+1页,所以应该在(2n-1,2n)对上计算概率,对于每个n,1这是我在做什么staticprotectedintsommaCifreNumero(intnumero){intretnum=0;for(charc:Integer.valu

java - 转换分支定界循环以使用 Java Stream API

我有一个简单的分支限界算法,适用于旅行商问题的变体,我认为尝试将其转换为使用Java8StreamAPI会很有趣。但是,我很难弄清楚如何在不依赖副作用的情况下做到这一点。初始代码intbound=Integer.MAX_VALUE;ListbestPath=null;while(!queue.isEmpty()){Nodecurr=queue.poll();//boundexceedsbest,bailif(curr.getBound()>=bound){returnbestPath;}//haveacompletepath,saveitif(curr.getPath().size()

java - 将数组分成相等大小,使得给定函数的值最小

我遇到了以下问题陈述。YouhavealistofnaturalnumbersofsizeNandyoumustdistributethevaluesintwolistsAandBofsizeN/2,sothatthesquaredsumofAelementsisthenearestpossibletothemultiplicationoftheBelements.Example:Considerthelist71119103513912.Theoptimizeddistributionis:ListA:5991213ListB:1371011whichleadstothediffer

java - 在 java 中使用正则表达式过滤日志

描述比较长,还请大家多多包涵:我的日志文件大小从300mb到1.5Gb不等,需要根据搜索键对其进行过滤。日志的格式是这样的:24May201717:00:06,827[INFO]123456(Blah:Blah1)Service-name::Singlelinecontent24May201717:00:06,828[INFO]567890(Blah:Blah1)Service-name::Content(Mayspanmultiplelines)24May201717:00:06,829[INFO]123456(Blah:Blah2)Service-name:Multipleline

java - 动态订单统计: get k-th element in constant time?

所以,我正在尝试实现一个数据结构来处理动态订单统计。数据结构有以下操作:add(x):插入一个值为x的新元素get(k):返回第k个最小元素:k=ceiling(n/a),其中n=数据结构中的元素数量,a=常数因子。reset:重置整个数据结构,即数据结构“在它之后为空”我使用平衡的AVL树实现了我的数据结构。使用此操作具有以下时间复杂度:添加(x):O(log(n))得到(k):O(log(n))这是我对使用O(log(n))时间的get(k)的实现:publicstaticintget(Nodecurrent,intk){intl=tree.sizeLeft(current)+1;

java - (a * b)/c MulDiv 和处理中间乘法溢出

我需要做以下算术:longa,b,c;longresult=a*b/c;虽然结果保证适合long,但乘法不是,所以它可能会溢出。我试着一步一步地做(先乘后除),同时通过将a*b的中间结果拆分成一个最大为4的int数组(much就像BigInteger正在使用它的int[]mag变量一样)。在这里,我被部门困住了。我无法理解进行精确除法所需的位移位。我只需要商(不需要余数)。假设的方法是:publicstaticlongdivide(int[]dividend,longdivisor)此外,我不考虑使用BigInteger,因为这部分代码需要快速(我想坚持使用基元和基元数组)。如有任何帮

java - 在大型数据集中对相同值进行分组的有效解决方案

在我的工作中,我要为以下问题开发和实现解决方案:给定一个包含30M记录的数据集,从特定数据集字段中提取(键,值)元组,按键和值对它们进行分组,存储每个键的相同值的数量。将每个键的前5000个最常见值写入数据库。每个数据集行最多包含100个(键、值)序列化XML形式的元组。我想出了这样的解决方案(使用Spring-Batch):批处理作业步骤:第1步。遍历数据集行并提取(键、值)元组。获得一些固定数量的元组后,将它们转储到磁盘上。每个元组进入一个名称模式为“/chunk-”的文件,因此指定键的所有值都存储在一个目录中。在一个文件中,值按顺序存储。第2步。遍历所有''目录并将它们的bloc