首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >求交替数的计数

求交替数的计数
EN

Code Review用户
提问于 2017-10-09 10:39:36
回答 1查看 1.1K关注 0票数 1

我要做的是找出交替数的计数,这样它与-ve交替,并且正符号为例如:1 -2,3 -4将得到从1到-4之间的4,3,2,1,包括有4个数字的两个数字。同样的,对于11-3 2可以得到1 3 2 1,现在我有了代码,但是我不能优化它,它会返回一个超过错误的时间限制,即使它适用于中等输入流。

这里,交替的方法,如第一个数是正数,第二个数是负数,下一个数是正数,等等。所以,如果输入是1-2-3-4,那么从数字1到最大,我可以移动到-4,这样就有一个交替的序列。所以计数=3 +数字本身,也就是-2,如果我从-2出发,我可以走到- 4,因为它从负的、正的和负的交替。所以又是两个数字+1=3。类似地,对于r=each位置,我得到它为4,3,2。现在,假设数是1 -3 2,那么就没有1的数字,可以立即找到下一个交替数。

因此,对于1,1 -3,2,1,由于没有直接的-ve数,它是1,对于第二个1,我可以遍历到a -3和2 i.2,也就是说,count=2+1=3.For -3,我只找到一个2,所以计数是1+1=2.For,最后一个数是1,所以答案是1,3,2,1

样本输入:1 -2 1 -3 2

产出:4 3 2 1

代码语言:javascript
运行
复制
j=0
count=0
length=(raw_input())
st=map(int,raw_input().split())
while j+1 < len(st):
     k=j+1
     count=0
     temp=j
     while k<len(st) and ((st[k]<0 and st[j]>0) or (st[k]>0 and st[j]<0)):
       count+=1
       k+=1
       j+=1
     print count+1,
     j=temp+1
print 1
EN

回答 1

Code Review用户

发布于 2017-10-09 11:02:54

你确定你应该打印最终答案的中间结果吗?如果最终值已满,则在内循环和算法复杂度变为O(N)之后,没有理由返回到初始j

代码语言:javascript
运行
复制
j = 0
max = 0
length = (raw_input())
st = map(int,raw_input().split())
while j+1 < len(st):
   k = j + 1
   count = 1
   while k<len(st) and ((st[k]<0 and st[k-1]>0) or (st[k]>0 and st[k-1]<0)):
     count += 1 
     k += 1
     j += 1
   for c in range(1, count+1)[::-1] :
     print c
   j += 1
票数 0
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/177508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档