在Python中,我们使用for循环的方法如下:
for i in range(len(nums))
在Java中,我们有:
for (int i = 0; i < nums.length; i++)
这两个for循环是否相同?如果我们在for循环内部进行了一些更改,比如说对于Java语言,i增加了3,在for循环中,下一个i将会是4吗?而Python仍然从2开始。
Leetcode 594. 最长和谐子序列。
我们定义一个和谐数组是指其最大值和最小值之间的差恰好为1。
以下是Java语言写的解决方案:
nums=[1,3,2,2,5,2,3,7]
public class Solution {
public int findLHS(int[] nums) {
Arrays.sort(nums);
int prev_count = 1, res = 0;
for (int i = 0; i < nums.length; i++) {
int count = 1;
if (i > 0 && nums[i] - nums[i - 1] == 1) {
while (i < nums.length - 1 && nums[i] == nums[i + 1]) {
count++;
i++;
}
res = Math.max(res, count + prev_count);
prev_count = count;
} else {
while (i < nums.length - 1 && nums[i] == nums[i + 1]) {
count++;
i++;
}
prev_count = count;
}
}
return res;
}
}
我转向使用Python编程语言:
nums=[1,3,2,2,5,2,3,7]
nums=sorted(nums)
prev_count=1
res=0
i=0
for i in range(len(nums)-1):
count=1
if i>0 and nums[i]-nums[i-1]==1:
while i<len(nums)-1 and nums[i] == nums[i+1]:
count+=1
i+=1
res=max(res,count+prev_count)
prev_count=count
else:
while i<len(nums)-1 and nums[i] == nums[i+1]:
count+=1
i+=1
prev_count=count
print (res)
在Java中
for (int i = 0; i < nums.length; i++) {
int count = 1;
if (i > 0 && nums[i] - nums[i - 1] == 1) {
while (i < nums.length - 1 && nums[i] == nums[i + 1]) {
count++;
i++;
}
在for循环中使用i++,因此i从添加了的值开始。
在Python中:
代码示例不明确,请提供更多上下文信息,以便进行正确的翻译。
for i in range(len(nums)-1):
count=1
if i>0 and nums[i]-nums[i-1]==1:
while i<len(nums)-1 and nums[i] == nums[i+1]:
count+=1
i+=1
在 i+=1 之后,它仅适用于 While 循环,而对于循环则仍从 i=2 而不是 4 开始。Java 返回的答案是 5,而 Python 的答案是 4。我调试了代码,看起来 Java 会使用已添加的 i 进行计算,而 Python 则不使用添加的 i,并且总是从最后一个 i 开始。