前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对一道【脉脉】上 头条 算法面试题的思考

对一道【脉脉】上 头条 算法面试题的思考

作者头像
super.x
发布2019-04-12 15:19:14
5790
发布2019-04-12 15:19:14
举报

偶然间在脉脉上看到了一道头条的算法面试题

clipboard.png
clipboard.png

按照题目的理解,简单的写了一个html网页

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>pool</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
    <div id="vue_det">
        <div @click="SmartChange(0)" style="width:40px;height:40px;background:#fff">开始</div>
        <div class="pool" v-for="(item, index) in list">
            <div @click="change(index)" v-if="item" style="width:40px;height:40px;background:#999;float:left">{{index}}</div>
            <div @click="change(index)" v-if="!item" style="width:40px;height:40px;background:#fff;float:left">{{index}}</div>
        </div>
    </div>
 
    <script src="https://cdn.bootcss.com/vue/2.6.4/vue.js"></script>
    <script>
        var vm = new Vue({
                el: '#vue_det',
                data: {
                    list: [],
                    i: 0
                },
                methods: {
                    details: function () {
                        return this.site + " - 学的不仅是技术,更是梦想!";
                    },
                    change (index) {
                        // console.log(index)
                        if (index === 99) {
                            this.list[0] = !this.list[0]
                            this.list[98] = !this.list[98]
                            this.list[99] = !this.list[99]
                        } else if (index === 0) {
                            this.list[0] = !this.list[0]
                            this.list[1] = !this.list[1]
                            this.list[99] = !this.list[99]
                        } else {
                            // console.log('222')
                            this.list[index] = !this.list[index]
                            this.list[index - 1] = !this.list[index - 1]
                            this.list[index + 1] = !this.list[index + 1]
                        }
                        // console.log(this.list)
                        this.list = JSON.parse(JSON.stringify(this.list))
                    },
                    SmartChange (index) {
                      if (this.i === 99) {
                          return false
                      }
                      if (this.list[this.i] === true) {
                          this.i = this.i + 1
                          setTimeout(() => {
                            this.SmartChange()  
                          }, 10);
                      } else {
                          this.change(this.i + 1)
                          setTimeout(() => {
                              this.SmartChange()
                          }, 10);
                      }
                    //   console.log('222222222',this.i)
                    },
                    go () {
                        for (let index = 1; index < 101; index++) {
                            this.list.push(Math.random() > 0.5 ? true : false)
                        }
                        console.log(this.list)
                        let a = 0, b = 0
                        this.list.map(val => {
                            if (val) {
                                a++
                            } else {
                                b++
                            }
                        })
                        console.log(a, b)
                    }
                },
                created () {
                    this.go()
                }
            })
    </script>
</body>
</html>

得到了如下效果图

clipboard.png
clipboard.png
图片描述
图片描述

得到如题可以进行开关的示例

在最后一个灯特殊处理,链接第一个灯,形成环

经过测试发现 只要从序号0开始,如果打开则跳过,如果是灭灯,则点击i+1 得到如下效果

图片描述
图片描述

敲黑板

现在得出的部分结论是 只有随机亮灭灯是一定比例的时候才有可能全部点亮

现在可行的比例为 亮-灭 50-50 亮-灭 51-49 亮-灭 47-53 亮-灭 44-56 亮-灭 42-58 亮-灭 53-47 亮-灭 54-46

而且,还决定于最后一个灯和相邻灯的亮灭

大家有什么好想法,可以留下见解讨论下

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档