zoukankan      html  css  js  c++  java
  • 335. Self Crossing

    问题描述:

    You are given an array x of n positive numbers. You start at point (0,0) and moves x[0] metres to the north, then x[1] metres to the west, x[2] metres to the south, x[3] metres to the east and so on. In other words, after each move your direction changes counter-clockwise.

    Write a one-pass algorithm with O(1) extra space to determine, if your path crosses itself, or not.

    Example 1:

    Given x = [2, 1, 1, 2],
    ?????
    ?   ?
    ???????>
        ?
    
    Return true (self crossing)
    

    Example 2:

    Given x = [1, 2, 3, 4],
    ????????
    ?      ?
    ?
    ?
    ?????????????>
    
    Return false (not self crossing)
    

    Example 3:

    Given x = [1, 1, 1, 1],
    ?????
    ?   ?
    ?????>
    
    Return true (self crossing)
    

    解题思路:

    这道题我一开始想简单了,但是后来想到了更多的情况后就自己驳回自己了

    所以我参考了Grandyang的总结

    枚举出可能的情况:

         x(1)
        ┌───┐
    x(2)│   │x(0)
        └───┼──>
        x(3)│
            
          x(1)
        ┌──────┐
        │      │x(0)
    x(2)│      ^
        │      │x(4)
        └──────│
          x(3)


          x(1)
        ┌──────┐
        │      │x(0)
    x(2)│     <│────│
        │       x(5)│x(4)
        └───────────│
            x(3)
    
    

    根据这三种情况列出可能会出现selfcross的条件

    代码:

    class Solution {
    public:
        bool isSelfCrossing(vector<int>& x) {
            for(int i = 3; i < x.size(); i++){
                if(x[i] >= x[i-2] && x[i-3] >= x[i-1]){
                    return true;    
                }
                if(i >= 4 && x[i-1] == x[i-3] && x[i-2] <= (x[i]+x[i-4])){
                    return true;
                }
                if(i >= 5 && x[i-2] >= x[i-4] && x[i-3] >= x[i-1] && x[i-1] + x[i-5] >= x[i-3] && x[i] + x[i-4] >= x[i-2])
                    return true;
            }
            return false;
        }
    };
  • 相关阅读:
    【已解决】github中git push origin master出错:error: failed to push some refs to
    好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
    THINKPHP 5.0目录结构
    thinkphp5.0入口文件
    thinkphp5.0 生命周期
    thinkphp5.0 架构
    Django template
    Django queryset
    Django model
    Python unittest
  • 原文地址:https://www.cnblogs.com/yaoyudadudu/p/9232012.html
Copyright © 2011-2022 走看看