日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

335. 路径交叉

發布時間:2023/11/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 335. 路径交叉 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

335. 路徑交叉

給你一個整數數組 distance 。

從 X-Y 平面上的點?(0,0)?開始,先向北移動 distance[0] 米,然后向西移動 distance[1] 米,向南移動 distance[2] 米,向東移動 distance[3] 米,持續移動。也就是說,每次移動后你的方位會發生逆時針變化。

判斷你所經過的路徑是否相交。如果相交,返回 true ;否則,返回 false 。

示例 1:

輸入:distance = [2,1,1,2]
輸出:true
示例 2:


輸入:distance = [1,2,3,4]
輸出:false
示例 3:

輸入:distance = [1,1,1,1]
輸出:true

提示:

  • 1 <=?distance.length <= 10^5
  • 1 <=?distance[i] <= 10^5

解題思路

分為3種情況討論

  • 外卷
    只要滿足distance[i] > distance[i - 2]這個條件,路徑就會不斷螺旋向外擴展

  • 內卷
    只要滿足distance[i] < distance[i - 2]這個條件,路徑就會不斷螺旋向里收縮

  • 先外卷再內卷
    由兩部分組成,第一部分是外卷,第二部分是內卷
    當distance[i]>=distance[i-2]-distance[i-4]的時候,如下圖所示,我們需要對i-1的長度進行截斷,因為后面再判斷內卷的時候,不能直接用原來i-1的長度

  • 代碼

    class Solution { public:bool isSelfCrossing(vector<int> &distance) {int i = 2, n = distance.size();if(n<4) return false;while (i < n && distance[i] > distance[i - 2])i++;if (i==n) return false;if (distance[i]>=distance[i-2]-(i>=4?distance[i-4]:0)){distance[i-1]-=(i>=3?distance[i-3]:0);}i++;while (i < n && distance[i] < distance[i - 2])i++;return i!=n;} };

    總結

    以上是生活随笔為你收集整理的335. 路径交叉的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。