【算法设计】“123”算法设计思路

“123”算法设计思路

背景:

    在做展厅的项目时,遇到一个需求,用一个激光笔,有两种播放模式,控制三个屏幕播放图片。这个功能经过了两次迭代,第一次设计的很不好,用户体验很差,切换图片不流畅,图片错乱等问题经常出现,不过第二次我从新思考这个问题,经过思考,优化了切换图片的算法,并且取得了良好的效果。因此,我将它命名为“123算法”。

功能简介:

    三个屏幕:三个屏幕,对应到程序中就是三个组图片的list。

    两种模式:自动模式就是让三块屏幕自动播放各自的list图片,通过定时器循环,手动模式是暂停定时器,然后让激光笔的上下键切换图片。

    一个激光笔:激光笔有四个按键,暂停,播放两个按键分别三个屏幕图片 自动播放,还是手动播放。上一个,下一个,切换图片使用。按下一个时,默认从第一块屏幕开始切换,切换到第一个屏幕的最后一张时,再按下键时,开始切换第二块屏幕的图片。同理,上一个按键也是如此。

难点:

   从1切2,从2切3,以及从2切1,从3切2 索引控制

   切到最左侧和切到最右侧,索引如何处理,保证往回切不会错乱

思路:

    在这里,自动模式我们可以暂时不考虑,因为自动只需要把三组图片的索引都置位0,然后用定时器切换即可。

    手动模式,我们用一个索引来判断当前切换的图片应该 落在哪个数组上, 这个索引的最小值是1,最大值是三组图片的数量总和

    思路很简单,接下来我们来思考几个问题。

    1.索引默认值是多少? 

    答:1。 因为当暂停自动播放时,要把三组图片每个都回到第一张上,因此相当于索引已经切到第一张图片,所以是1.

    2.如何控制切换哪个数组?

    答:通过三组图片数量判断。向后切,索引增加到数组一长度时,则该切换数组二的图片,以此类推。向前切,2切1,索引小于数组1的长度时,则切换数组1图片。

    3.由1切2时,2屏幕已经到第一张图片了,索引还增加吗?

    答:增加。 因为如果不增加,用户就会以为激光笔不好用,会出现卡顿现象。我第一个版本就是没有切换,以至于每次卡顿和报错分不清楚,所以导致体验很差。

    4.索引增加了,那再去判断切换哪个数组的范围是不是就要变了?

    答:是。这里有一个要点,就是只要用户点击了下或上键,就必须切换图片。因此,实际上我们判断的末端索引要比数量总和小于2才正确。

    5.索引到末尾了,或者到最前了,用户还在疯狂按怎么办?

    答:双重保护。在切换到最后一张图片时,就不要再去增加索引,并置位默认最大值。再去判断,若多次点击导致超出范围,也将其置位默认值。

    6.索引万一失效,某组图片少切一张,而直接越过怎么办?

    答:边界赋值。当切换到边界时,重新给每个数组置默认值,比如到达末尾时,就让三组图片都到最后一张。

总结:

    一个产品,最开始可能只是追求实现,但是只有实现是不行的,要想做得好,就需要不断地进行迭代,优化其算法。

    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值