<address id="n1vvb"></address>
          <font id="n1vvb"></font>

            <thead id="n1vvb"></thead>

                一来就给LeetCode跪了

                之前的OJ战场在 HackerRank ,今天终于禁不住铺天盖地的诱惑,加入 LeetCode 大军


                按照学编程就从“Hello world!”开始的尿性,刷OJ当然也从 1 号题出发微笑




                Aha~~~!看起来是非常简单的问题呢!


                先来个暴力for for法!

                什么?!不行?!

                这我当然知道!玩玩儿你!


                如果不对数组进行排序,那么对于一般的方法,必然是需要进行两两相加比较的(由不加证明的脑内剧场给出……)


                好,排序。

                <span style="font-family:Microsoft YaHei;">std::sort(numbers.begin(), numbers.end());</span>

                要输出序号,当然要配合一个map

                <span style="font-family:Microsoft YaHei;">std::map<int, int> index_num_map;</span>


                可是这些思路形成后,想到了一些比较奇怪的问题。

                如果输入是 [1,-2,7,-1,6],  5 怎么破?该输出 -2,7 的下标还是 -1,6 的下标?

                大概是输出优先成对的吧

                可是排序之后必然使得优先顺序打乱……

                如果没有配对值,题目接口又必须返回一个vector,这个vector应该包含什么?

                空的吧

                又或者[0,0]吧


                于是又否定了排序的思路,开始想着在原方法上简化

                例如使用各种 if 手段跳过某些循环项


                这么尝试了各种办法,N次(后面会看到,真的是很多次),还是不行


                不过在这些试验中,通过错误数据渐渐发现是我想多了 ORZ……


                日啊,审题审题!!!这个初中高中就被各科老师强调无数次的东西,还是中计了!!!

                “YOU MAY ASSUME THAT EACH INPUT WOULD HAVE EXACTLY ONE SOLUTION”

                说多了都是泪,直接造成最后我的提交就是这样的哭↓↓↓



                总结一下:

                1、LeetCode的题目确实别于其他的OJ,更加侧重于解决某个特殊的实际问题

                2、函数接口给定,不需要自己写IO什么的,这点和第一条一致

                3、代码无法直接复制进IDE调试,要么肉眼Debug(甚至连std::cout都不会输出!),要么自己动手写Client

                4、正因为各种限定较多,更需要仔细阅读题目,理解题目

                5、O(N^2)就是 O(N^2),不能指望通过 if 来降低复杂度。

                相关文章
                相关标签/搜索
                特马资料最准2019四肖期期准四肖三期内必出四肖期期准免费公开四肖中特1肖1码期期大公开