当前位置: 首页 > 知识库问答 >
问题:

相似的代码,相同的功能,看不出有什么不同

岳均
2023-03-14

https://leetcode.com/problems/find-all-numbers-dispapered-in-an-array/discuss/93007/simple-java-in-place-sort-solution

你能查一下上面的链接吗?

我看不懂密码

1) nums[i] != i+1
2) nums[i] != nums[nums[i]-1]
index 0 : 1
index 1 : 2
index 2 : 3

然后,第一个只是简单地使用index我们可以检查index+1是不是值。

第二个,

nums[0] = nums[nums[i]-1]
nums[0] = nums[nums[0]-1]
nums[0] = nums[1-1]
nums[0] = nums[0]

它最终也是一样的东西,只是为了证明索引值=index+1。

但是为什么while循环必须同时具备这两个条件呢?或者我们就用一个?

共有1个答案

陶刚豪
2023-03-14
  1. 数字[i]!=i+1

值在它的位置吗?如果不是,可以把它换回原处...

这是需要的,因为你必须测试每一个位置

这是需要的,因为算法将链中的每个元素放置到其位置。

举个例子:

[3,1,2,4,6,5,8,7]

应该很清楚,你需要重新排列1,2,3和5,6和7,8。

让我们看看排序是如何发生的:

i:0 [3,1,2,4,6,5,8,7] 3<->2
i:0 [2,1,3,4,6,5,8,7] 2<->1
i:0 [1,2,3,4,6,5,8,7] now 1 is at its place, go to the right and find another chain
i:1 [1,2,3,4,6,5,8,7] 2 at its place
i:2 [1,2,3,4,6,5,8,7] 3 at its place
i:3 [1,2,3,4,6,5,8,7] 4 at its place
i:4 [1,2,3,4,6,5,8,7] 6<->5
i:4 [1,2,3,4,5,6,8,7] now is 5 at its place, go to the right and find another chain
i:5 [1,2,3,4,5,6,8,7] 6 at its place
i:6 [1,2,3,4,5,6,8,7] 8<->7
i:6 [1,2,3,4,5,6,7,8] now is 7 at its place, go to the right and find another chain
i:7 [1,2,3,4,5,6,7,8] 8 at its place
END
 类似资料:
  • 对于输入1534236469,我在反向和反向中得到两个不同的答案——反向1做了什么是错误的? /***给定一个32位有符号整数,整数的倒数。**示例1:*输入:123输出:321示例2:*输入:-123输出:-321示例3:*输入:120输出:21注:假设我们处理的环境*只能存储32位有符号整数范围内的整数:[−231, 231 * − 1]. 对于这个问题,假设当反向整数溢出时,函数返回0**/

  • 我不明白为什么我会有这个错误信息。 首先,我不仅找不到两个之间的任何区别,而且为什么错误消息说添加(布尔)?我想应该是add(int index)。这里有什么问题吗?

  • 我偶然发现了一些毫无意义的东西。我有这个Python代码,它做2个简单的for循环,只是测量执行时间。然而,我发现从一个函数调用完全相同的代码需要一半的时间。有人能解释一下为什么吗? 这里是输出:

  • 问题内容: 我有以下二维位图: 出于好奇,我想检查一下,如果它将使用整数而不是布尔值,它将占用多少空间。所以我检查了当前大小并得到 104 之后,我修改了 但仍然有 104 然后我决定看看仅用字符串我就能得到多少: ,仍然显示 104 这看起来很奇怪,因为我期望字符串列表列表浪费大量的内存,而不仅仅是布尔值。 显然我缺少有关getsizeof如何计算大小的信息。谁能解释我为什么得到这样的结果。 P

  • 问题内容: 在以下代码中,我不明白为什么当它属于两个不同的对象时具有相同的ID? 问题答案: 我认为这是正在发生的事情: 取消引用时,将在内存中创建其副本。该存储位置由以下位置返回 由于没有引用到刚刚创建的方法的副本,因此GC将其回收,并且该内存地址再次可用 取消引用时,将在相同的内存地址(可用)中创建它的副本,您可以再次使用该地址。 第二个副本是GCd 如果您要运行一堆其他代码并再次检查实例方法

  • 我试图将paralleStream与自定义的ForkJoin池一起使用,该任务执行网络调用。当我使用以下样式时 如果使用parallelStream,那么ForkJoinPool.Common是否以某种方式参与其中?下面是模拟上述两种样式的整个程序