В Python мы делаем цикл вроде:
for i in range(len(nums))
В Java: имеем:
for (int i = 0; i < nums.length; i++)
Являются ли эти два цикла идентичными?Если мы внесли некоторые изменения в цикл for, скажем, в цикле for у меня было плюс 3, для Java следующим циклом i в for будет 4?в то время как Python все еще запускает i из 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++;
}
i ++ внутри цикла forпоэтому я начал с того, что было добавлено.
В 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.