3 回答
TA贡献1803条经验 获得超3个赞
试试下面的逻辑。
public static int processArray(ArrayList<Integer> array) {
int count=0;
for(int i=0;i<array.size();i++)
{
if((array.get(i)%2)!=0) //odd
{
count++;
if(count>1) //I had to replace length of odd seq greater than or equal to 2
{
array.set(i,count); //set curren count to current odd no and remove previous odd number
array.remove(i-1);
if(i>0) //For handling change in indices
i=i-1;
else
i=0;
}
}
else
{
count=0;
}
}
return array.size();
}
TA贡献1796条经验 获得超10个赞
试试下面的 Python 代码:首先用计数替换最后一个连续的奇数,然后用 -1 替换前面的奇数。最后,从列表中删除所有 -1。
原因:用-1代替连续的奇数来遍历整个列表会很方便,否则数字的结构和索引会改变并且难以迭代。
l=[222,3,35,62,124,61,29,375,66,7,-1]
count = 0
for i in range(0,len(l)):
if l[i]%2!=0 and i!=len(l)-1:
count +=1
else:
if count > 1:
l[i-1]=count
while count != 1:
l[i-count]= -1
count -= 1
count = 0
l = [i for i in l if i>=0 ]
print(l)
输出:[222, 2, 62, 124, 3, 66, 7]
TA贡献1828条经验 获得超3个赞
您应该在 processArray() 中添加另一个循环,该循环在找到奇数时执行并增加计数
在循环之前将号码存储为备份
然后在添加之前检查计数是否大于 1 然后用计数替换数字,否则使用备份整数
您还应该保存第一个奇数的迭代器位置。
添加回答
举报