335. Self Crossing
来源:互联网 发布:淘宝如何买东西 编辑:程序博客网 时间:2024/06/14 03:18
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)
Credits:
Special thanks to @dietpepsi for adding this problem and creating all test cases.
按顺时针画线,问是否会出现相交。对于某一条边,出现相交的情况有三种,如图所示:
根据上面三种情况编写就可以了。
代码:
class Solution{public:bool isSelfCrossing(vector<int>& x) {for(int i = 3; i < x.size(); ++i){if(x[i - 1] <= x[i - 3] && x[i] >= x[i - 2]) return true;if(i >= 4 && x[i - 1] == x[i - 3] && x[i] + x[i - 4] >= x[i - 2]) return true;if(i >= 5 && x[i - 1] <= x[i - 3] && x[i - 2] > x[i - 4] && x[i - 1] + x[i - 5] >= x[i - 3] && x[i] + x[i - 4] >= x[i - 2]) return true;}return false;}};
0 0
- [leetcode]335. Self Crossing
- leetcode 335. Self Crossing
- [LeetCode] 335. Self Crossing
- [leetcode] 335. Self Crossing
- 335. Self Crossing
- leetcode.335. Self Crossing
- Leetcode:335. Self Crossing
- LeetCode-335.Self Crossing
- 335. Self Crossing
- 335. Self Crossing
- LeetCode 335. Self Crossing
- 335. Self Crossing
- [LeetCode]335. Self Crossing
- 335. Self Crossing
- 335. Self Crossing
- leetcode 335. Self Crossing
- 335. Self Crossing(C++实现)
- Leetcode题解:335. Self Crossing
- WebConfig配置文件详解
- java中为什么要把main方法定义为一个static方法?
- 一个贴吧小问题引发的思量
- 把字符串转换成整数(try-except)
- NYOJ463 - 九九乘法表
- 335. Self Crossing
- POJ 2251 Dungeon Master (BFS)
- Leetcode——75. Sort Colors
- NYOJ1071 - 不可以!
- Merge sort
- 2016年年终终结
- Java 中,为什么在静态方法中可以调用的方法、可以使用的成员变量必须是静态的?
- NYOJ105 - 九的余数
- C++多重继承下的函数动态绑定问题分析