草庐IT

Java - 如何解决这个二维数组沙漏?

我正在解决一个问题,我必须打印数组中所有沙漏中最大的总和。您可以找到有关问题的详细信息here-我尝试了什么:publicclassSolution{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);intarr[][]=newint[6][6];for(intarr_i=0;arr_i0){sum=sum+(arr[arr_i][arr_j])+(arr[arr_i][arr_j+1])+(arr[arr_i][arr_j+2]);sum=sum+(arr[arr_i+1][arr_j+1]);sum

java - 在 Java 中查找字符串中的子字符串

我正在编写一个程序来在Java中查找字符串中的子字符串,而无需使用任何Java库。我写了一个函数subString(Stringstr1,Stringstr2)如下所示。它适用于以下输入:str1="rahul"str2="我叫拉胡尔"str1="rahul"str2="rahulsah"str3="rahul"str2="sahrahul"当我输入如下时出现问题:str1="rahul"str2="rararahul"str1="rahul"str2="我叫苏尼尔"进入无限循环。任何人都可以查看我的代码片段并帮助我。publicstaticbooleansubString(Strin

java - 为什么 0010 在 java 数组中给出不同的结果

如果我在数组输出中的数字值之前放置00或0会变得不同。intarr[][]=newint[3][2];arr[0][0]=00;arr[0][1]=01;arr[1][0]=10;arr[1][1]=0011;arr[2][0]=0020;arr[2][1]=21;for(inta[]:arr){for(intc:a){System.out.println(c);}}输出是:01个1091621 最佳答案 前导零的数字被视为Octal.0011是八进制8+1=9,0020是2*8=16。请注意,您的00和01也被解释为八进制,但它们

java - 两个数组元素的总和?

有一个问题,其中给出了两个随机整数数组,其中从0到9的数字出现在每个索引处(即单个数字整数出现在两个给定数组的每个索引处)。我需要找到输入数组表示的数字的总和并将结果放在另一个数组中。我相信我的代码一切正常,因为我为不同的数组执行了将近50到60次。但是当我在学校的在线法官中提交它时,它只接受了4个测试用例并拒绝了另外两个。我不知道在哪种情况下它会给出错误的输出。需要一点帮助。这是我的代码publicstaticint[]sumOfTwoArrays(int[]arr1,int[]arr2){intsize1=arr1.length;intsize2=arr2.length;intca

java - 字符串反向操作最佳时间复杂度: Is it O(n) or O(n/2)?

下面是字符串反转的代码片段privatestaticStringreverseString(StringoriginalString){chararr[]=originalString.toCharArray();chartemp;for(inti=0,j=arr.length-1;i我看到很多关于上述字符串反转的时间复杂度的讨论,其中一些提到复杂度为O(n/2)和一些O(n)。我想了解哪个实际上是字符串反转的正确时间复杂度。任何见解都将真正有助于缓解这里的困惑。 最佳答案 O(n)和O(n/2)之间没有什么区别。两者之间的差异是恒

java - 如何检查数组是否已经排序

那么如何做出这样的逻辑int[]arr={2,5,3};if(/*arrissorted*/)....else...糟糕的是Array.sort方法是无效的 最佳答案 您不需要对数组进行排序来检查它是否已排序。遍历每对连续的元素并检查第一个是否小于第二个;如果您发现一对不正确,则数组不会排序。booleansorted=true;for(inti=0;iarr[i+1]){sorted=false;break;}} 关于java-如何检查数组是否已经排序,我们在StackOverflow

java - 算法 : Hybrid MergeSort and InsertionSort Execution Time

美好的一天SO社区,我是一名CS学生,目前正在进行结合MergeSort和InsertionSort的实验。据了解,对于某个阈值S,InsertionSort将比MergeSort具有更快的执行时间。因此,通过合并两种排序算法,将优化总运行时间。但是,在多次运行实验后,使用1000的样本大小,不同大小的S,每次实验的结果都没有给出确定的答案。这是获得的更好结果的图片(请注意,有一半的时间结果不是确定的):现在,尝试样本大小为3500的相同算法代码:最后,以500,000的样本量尝试相同的算法代码(注意y轴以毫秒为单位:尽管从逻辑上讲,当S目前,这些是教给我的时间复杂度:合并排序:O(n

java - Max Heapify 算法结果

我一直在研究算法入门教科书中的一些算法,特别是我正在尝试让二叉堆100%正确地工作。我有一种奇怪的感觉,我正在使用的示例不正确,我想知道是否有人可以帮助我指明正确的方向。给定数组int[]arr={1,2,3,4,7,8,9,10,14,16};我从MaxHeapify得到的结果是[16,14,9,10,7,8,3,1,4,2]但是,在进行了一些Google搜索之后,我发现使用这个精确数组作为示例的人期望的结果是:[16,14,10,8,7,9,3,2,4,1]令我困惑的是,我的MaxHeapify方法给出的结果满足堆属性,但它与预期的不同。下面是我在Java中的实现publicsta

java - 在 Java 中使用第三个变量进行交换

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭9年前。Improvethisquestion什么需要使用第三个变量来交换数字?抱歉,我不明白。这是我根据每个元素的长度对数组元素进行排序的示例代码。正如您在这里看到的,我正在使用第三个变量,并交换数组的元素。我对这个有效的程序有不同的实现,但我在网上找到了下面的例子,想了解交换有什么用?如果有人能向我解释这一点,那就太好了。publicclassStringSort{publicstaticvoidmain(String[]args){St

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

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