草庐IT

algorithm

全部标签

java - 螺旋形地画线

我最近参加了一家公司赞助的编码竞赛,有一个我不明白的问题,问的是什么。这是问题:字符串“paypal是更快,更安全的汇款方式”写在从左上角开始的正方形内的顺时针螺旋图案:(您可能希望以固定的字体显示此图案,以提高可读性)。PAYPALFERWAIAMONYSSDYETTRNESOHETSAFE然后逐行读取:PAYPALFERWAIAMONYSSDYETTRNESOHETSAFE编写将使用字符串的代码,计算将要使用的最小平方包含它并返回转换后的字符串:字符串转换(字符串文本);例子:convert("paypalisthefastersaferwaytosendmoney")should

java - 获取加起来等于给定数字的所有可能的总和

我正在为安卓开发一个数学应用。在这些字段之一中,用户可以输入一个int(无数字且大于0)。这个想法是获得所有可能的和,使这个int,没有double(在这种情况下为4+1==1+4)。唯一已知的是这个int。例如:假设用户输入4,我希望应用返回:43+12+22+1+11+1+1+1显然4==4所以也应该添加。关于我应该如何着手做这件事有什么建议吗? 最佳答案 这是一个声称可以做到这一点的简单算法来自:http://introcs.cs.princeton.edu/java/23recursion/Partition.java.ht

java - 在 Java 中将 float 转换为 32 位定点数

我必须在Java中将float转换为32位定点数。无法理解什么是32位定点?任何人都可以帮助算法吗? 最佳答案 定点数是一个实数的表示,它使用特定数量的某种类型的位作为整数部分,其余的位作为小数部分。表示每个部分的位数是固定的(因此得名,定点)。整数类型通常用于存储定点值。定点数通常用于不支持float或需要比float更快的速度的系统。可以使用CPU的整数指令执行定点计算。32位定点数将存储在32位类型中,例如int。通常情况下,整数类型(在本例中为无符号)中的每一位都表示一个整数值2^n,如下所示:10110010=2^7+2^

用于排列数字列表的 Java 代码

我编写了一个程序来查找给定项目列表的所有可能排列。这恰恰意味着我的程序打印了r=0到n的所有可能的P(n,r)值代码如下:包com.algorithm;导入java.util.ArrayList;导入java.util.Calendar;导入java.util.Collection;导入java.util.HashSet;导入java.util.List;导入java.util.Set;公共(public)类排列{publicstaticvoidmain(Stringargs[]){Permutationsobj=newPermutations();集合input=newArrayLi

java - 在小于 O(n) 的时间内从排序数组中查找唯一数字

我有一个面试,有以下问题:FinduniquenumbersfromsortedarrayinlessthanO(n)time.Ex:11155591010Output:15910我给出了解决方案,但那是O(n)。编辑:排序后的数组大小约为200亿,唯一编号约为1000。 最佳答案 分而治之:查看已排序序列的第一个和最后一个元素(初始序列为data[0]..data[data.length-1])。如果两者相等,则序列中唯一的元素是第一个(无论序列有多长)。如果不同,则划分序列并对每个子序列重复。在平均情况下在O(log(n))中求

java - Java 6 中有哪些不同的排序算法可用?

有几种排序算法,如插入排序、选择排序、冒泡排序等,它们经常在计算机科学教科书中讨论。给定一个整数或对象数组,是否有内置的Java6语言API让我选择应用特定的排序算法来对数组进行排序,而不是我再次重新发明这些轮子?如果没有内置到Java6中,是否有提供此功能的开源库?它们是什么? 最佳答案 Arrays.sort()方法在所有原始类型数组中使用快速排序。Thesortingalgorithmisatunedquicksort,adaptedfromJonL.BentleyandM.DouglasMcIlroy's"Engineeri

java - 如何使用递归创建二进制搜索算法

我一直在利用大学假期通过编码算法练习Java。我编码的算法之一是二进制搜索:publicclassBinarySearch{privatestaticintlist[]={3,6,7,8,9,10};publicstaticvoidmain(String[]args){BinarySearchb=newBinarySearch();b.binarySearch(list);}publicvoidbinarySearch(int[]args){System.out.println("Binarysearch.");intupperBound=args.length;intlowerBou

java - 如何遍历二叉树?

现在我有privatestaticvoiditerateall(BinaryTreefoo){if(foo!=null){System.out.println(foo.node);iterateall(foo.left);iterateall(foo.right);}}你能把它改成迭代而不是递归吗? 最佳答案 您正在寻找的是后继算法。定义如下:第一条规则:树中的第一个节点是树中最左边的节点。下一条规则:节点的后继者是:Next-R规则:如果它有右子树,则右子树中最左边的节点。Next-U规则:否则向上遍历树如果你右转(即这个节点是左

java - 有没有比线性搜索更快的算法?

我听说没有比线性搜索更快的算法(对于未排序的数组),但是,当我运行这个算法(线性)时:publicstaticvoidsearch(int[]arr,intvalue){for(inti=0;i使用长度为1000000的随机数组,找到一个值的平均时间是75ns,但是使用这个算法:publicstaticvoidskipSearch(int[]arr,intvalue){for(inti=0;i我得到一个更短的平均值,68ns?编辑:很多人说我没有做适当的基准测试,这是侥幸,但我运行了这些函数1000000次并得到了平均值。每次我运行函数1000000次,第一个算法得到75-76ns,第

java - Java中的Anagram算法

我想制作字谜算法但是此代码不起作用。我的错在哪里?例如des和sed是变位词但输出不是变位词同时我必须使用字符串方法。不是数组。:)publicstaticbooleanisAnagram(Strings1,Strings2){StringdelStr="";StringnewStr="";for(inti=0;i 最佳答案 一种更简单的方法可能是对两个字符串中的字符进行排序,然后比较它们是否相等:publicstaticbooleanisAnagram(Strings1,Strings2){//Earlyterminationch