题解 | #MP3光标位置#

MP3光标位置

http://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15

'''
这题俺用的想法可能比较笨,纯条件语句_(¦3」∠)_,但一定是最清楚的
------
1    |
------
2    |
------
3    |->上框位置sk
------
4    |->光标位置gb
------
5    |
------
6    |->下框位置xk
------
7    |
------
8    |
------
'''
music_lt=[]# 创建音乐曲目列表
for i in range(1,int(input())+1):
    music_lt.append(i)
sk=0# 上框位置
if len(music_lt)>4:
    xk=3# 下框位置
elif len(music_lt)<=4:
    xk=len(music_lt)-1# 下框位置
gb=0# 光标位置

def ud1(w,s,x,g):# 曲目列表小于等于4时,只需改变光标位置,执行函数ud1
    if w=='U':
        if s<g<=x:
            g=g-1
        elif g==0:
            g=len(music_lt)-1
    elif w=='D':
        if s<=g<x:
            g=g+1
        elif g==len(music_lt)-1:
            g=0
    return s,x,g

def ud2(w,s,x,g):## 曲目列表大于4时,上框、下框、光标均可能改变执行函数ud2
    if w=='U':# 向上
        if s<g<=x:# 光标未到上框位置
            g=g-1
        elif g==s:# 光标到上框位置
            if g==0 and s==0:# 若是曲目列表顶端
                g=len(music_lt)-1
                s=len(music_lt)-4
                x=len(music_lt)-1
            else:# 若不是曲目列表顶端
                s=s-1
                g=g-1
                x=x-1
    elif w=='D':# 向下
        if s<=g<x:# 光标未到下框位置
            g=g+1
        elif g==x:# 光标到下框位置
            if g==len(music_lt)-1 and x==len(music_lt)-1:# 若是曲目列表底端
                g=0
                s=0
                x=3
            else:# 若不是曲目列表底端
                s=s+1
                g=g+1
                x=x+1
    return s,x,g

cz=input()# 操作的字符串
if len(music_lt)<=4:# 曲目列表小于等于4时
    for word in cz:
        sk,xk,gb=ud1(word, sk, xk, gb)
else:# 曲目列表大于4时
    for word in cz:
        sk,xk,gb=ud2(word, sk, xk, gb)

lt=[]
for k in music_lt[sk:xk+1]:
    lt.append(str(k))
print(' '.join(lt))# 输出当前列表

print(music_lt[gb])# 输出当前选中歌曲
    

【牛客站内】华为机试题练习记录

全部评论

相关推荐

(黑话警告⚠️:hc=岗位数量,&nbsp;mt=导师,&nbsp;ld=直属领导,&nbsp;cr=代码审查)25年1月,我加入了字节某前端团队,并期望能在这里待到秋招并尝试转正。然而,就在上周,ld&nbsp;找我1v1,告诉我,我的能力和团队预期不太匹配,并和我劝退。晴天霹雳吗?肯定是有的。那一刻,脑子里嗡嗡作响,各种情绪翻涌。但冷静下来想想,这几个月,自己在能掌控的范围内,确实有不少地方做得不尽如人意。所以,我想把这段不算成功的经历复盘一下,希望能给同样在努力转正的你提个醒,避开我踩过的坑。一、ld&nbsp;的要求要注意刚进组时,ld就和我聊过转正的事。我当时发问:“咱们这儿有hc&nbsp;吗?”&nbsp;ld没直接回答,只是说:“看能力,能力到了...
牛客上的彭于晏:过来人告诉你,入职后要做的第一件事儿不是说主动找活儿做,你要先学会融入团队,摸清ld的性格,投其所好。然后才是展示你的能力,能力上可以说技术或者业务,以业务能力为主,技术能力为辅。优先保证自己对业务需求的开发保证质量效率,然后再谈技术的问题,不要你觉得啥啥啥不行就想着整体优化了(发现校招生最喜欢干这事儿),我工作快5年了发现搞这种的最后都没啥好的结果,产出没有还引入新的bug,校招或者实习的水平看到的问题别人看不到嘛?为什么别人不去搞?浪费时间还没收益的事儿不要去做,技术上的能力体现在对于一个新需求,在不符合现在业务发展的架构设计上,你能拿出好的技术方案同时能考虑到后续业务发展逐渐将技术架构引入合理的架构,这是一个漫长的过程而不是一次性的
点赞 评论 收藏
分享
04-29 18:07
常州大学 Java
寂静羽翼:兄弟我已经亲身经历了,双非没实习很多大厂还是会给笔试的,可是有的公司笔试做的好也不给面一直卡着,ssob基本看我没实习都拒绝我了,但是每天投满偶尔也能有一两场初创公司的面试,但是薪资基本在五六千
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务