zoukankan      html  css  js  c++  java
  • [每日一题] leetcode 403. 青蛙过河

    因为数据太大,但数据量少,因此可以用map先建立映射关系

    再用二维set,其中set[i]表示第i个石块所能跳的距离数组

    二维vector会超时,set去重就可以了

    然后遍历每个石块,并求出其所能到达石块 所能跳的距离

    最后判断第n - 1个石块是否有能跳的步数即可

    class Solution {
    public:
        set<int> V[2020];
        map<int, int> M;
        bool canCross(vector<int>& stones) {
            int n = stones.size();
            int cnt = 0;
            for(int i = 0; i < n; i++)
                M[stones[i]] = i;
            V[0].insert(1);
            set<int>::iterator it;
            for(int i = 0; i < n; i++)
            {
                for(it = V[i].begin(); it != V[i].end(); it++)
                {
                    if(M.count(stones[i] + *it) != 0)
                    {
                        V[M[stones[i] + *it]].insert(*it);
                        if(*it - 1 != 0)
                            V[M[stones[i] + *it]].insert(*it - 1);
                        V[M[stones[i] + *it]].insert(*it + 1);
                    }
                }
            }
            return V[n - 1].size();
        }
    };
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    SQL 执行进展优化
    初识SQL 执行顺序
    前端模块化开发的价值(转)
    js 闭包之一
    js模块开发(一)
    简单说说call 与apply
    js 爱恨情仇说 this
    说说 js String
    $Ajax简单理解
    SQL-如何使用 MongoDB和PyMongo。
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/14718623.html
Copyright © 2011-2022 走看看