leetcode 2596.检查骑士巡视方案

class Solution {
public:
    bool checkValidGrid(vector<vector<int>>& grid) {
        //思路:
        //1.首先把每一步的下标记录下来,按顺序一维化展开
        //2.判断这个下标能否由上一步下标变换而来
        int n=grid.size();
        if(grid[0][0]!=0) return false;
        //定义一个n*n大小的vector容器存放
        vector<pair<int,int>>s(n*n,{0,0});
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                s[grid[i][j]]={i,j};
            }
        }
        for(int i=0;i<n*n-1;i++){
            int dx=s[i+1].first-s[i].first;
            int dy=s[i+1].second-s[i].second;
            //如果满足移动的条件
            if((dx*dx+dy*dy)!=5)  //如果移动的直角边平方和!=5 则说明不是按照题目要求走的
             return false;
        }
        return true;
        
    }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值