题目描述:

给定一个含有 n 个正数的数组 x。从点(0,0)开始,向北移动x[0]米,然后向西移动x[1]米,向南移动x[2]米,向东移动x[3]米,持续进行。换句话说,每次移动后你的方向都会逆时针变化。

以 O(1)的空间复杂度写一个一遍扫描算法,判断你的路径是否交叉。

示例 1:

给定 x = [2, 1, 1, 2],
?????
?   ?
???????>?返回 true (路径交叉了)

示例 2:

给定 x = [1, 2, 3, 4],
????????
?      ?
?
?
?????????????>返回 false (路径没有相交)

示例 3:

给定 x = [1, 1, 1, 1],
?????
?   ?
?????>返回 true (路径相交了)

思路:


一共有上面三种情况

情况1:
X(3)和x(0)相交,需满足条件x(2)<=x(0)且x(3)>=x(1)

情况2:
X(4)和x(0)相交,需满足条件x(1)=x(3)且x(4)+x(0)>=x(2)

情况3:

X(5)和x(0)相交,需满足条件x(2)>x(0)且x(3)>x(1)且x(4)<x(2)且x(3)>x(1)且x(5)+x(1)>=x(3)且x(4)+x(0)>=x(2)

JavaScript:

/*** @param {number[]} x* @return {boolean}*/
var isSelfCrossing = function(x) {var n = x.length;for (var i = 0; i < n; i++) {if (i + 3 < n && x[i] >= x[i + 2] && x[i + 1] <= x[i + 3]) {return true;}if (i + 4 < n && x[i + 1] == x[i + 3] && x[i] + x[i + 4] >= x[i + 2]) {return true;}if (i + 5 < n && x[i] < x[i + 2] && x[i + 4] < x[i + 2] && x[i + 2] <= x[i] + x[i + 4] && x[i + 1] < x[i + 3] && x[i + 3] <= x[i + 1] + x[i + 5]) {return true;}}return false;
};

参考:

http://www.cnblogs.com/grandyang/p/5216856.html

Leetcode 335. 路径交叉(Self Crossing)相关推荐

  1. 2022-01-10:路径交叉。给你一个整数数组 distance 。 从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南

    2022-01-10:路径交叉.给你一个整数数组 distance . 从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南 ...

  2. C++描述 LeetCode 112. 路径总和

    C++描述 LeetCode 112. 路径总和   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客,唯一博客更 ...

  3. LeetCode——113 路径总和 II(JAVA)

    给你二叉树的根节点 root和一个整数目标和 targetSum,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 示例 1: 输入:root = [5, ...

  4. LeetCode 666. 路径和 IV(树的遍历)

    文章目录 1. 题目 2. 解题 1. 题目 对于一棵深度小于 5 的树,可以用一组三位十进制整数来表示. 对于每个整数: 百位上的数字表示这个节点的深度 D,1 <= D <= 4. 十 ...

  5. LeetCode 437. 路径总和 III(双重递归)

    1. 题目 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二 ...

  6. LeetCode 113. 路径总和 II(回溯)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉 ...

  7. leetcode - 437. 路径总和 III

    给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二叉树不超过1 ...

  8. leetcode 113. 路径总和 II

    难度:中等 频次:60 题目: 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 解 ...

  9. 54. Leetcode 113. 路径总和 II (二叉树-二叉树路径和)

    给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径.叶子节点 是指没有子节点的节点.示例 1: 输入:root = [5, ...

最新文章

  1. Maven项目Spring Boot启动
  2. 应用TP3.2.3的一些小问题(一)
  3. 【JSON】数据格式
  4. MySQL浮点数和定点数类型
  5. 学银在线python课程_Python 从入门到精通:一个月就够了!
  6. 7-5 jmu-Java-03面向对象基础-05-覆盖 (3 分)
  7. mysql 查看所有表的引擎_MySQL查看数据库、表的占用空间大小以及某个库中所有表的引擎类型...
  8. 利用python自动清除Android工程中的多余资源
  9. Postgres用returning实现mysql的last_insert_id
  10. mysql主从备份 ssl_基于SSL的mysql主从复制
  11. Hamcrest匹配器框架
  12. TI OSAL资料 整理
  13. C语言编程 肥宅快乐水
  14. 如何听清楚、说明白--《结构思考力》
  15. 修复XP图片和传真查看器!
  16. vue 解决跨域时报错 Cannot read property ‘split‘ of null
  17. 程序员转行干什么好呢
  18. Excel 隔行插入行V2022.7(支持win11,支持Office 和WPS)
  19. JS-函数进阶笔记二次总结
  20. 【多益网络校招提前批】22届的同学可以冲啦

热门文章

  1. 【安全牛学习笔记】抓包嗅探
  2. Python抓取豆瓣电影详情并提取信息
  3. 阿里云释放数据能力 开启大数据元年
  4. Android EditText组件drawableLeft属性设置的图片和hint设置的文字之间的距离
  5. A Simple Math Problem 矩阵打水题
  6. Java读取excel文件 将Excel文件变为二维String数组 .
  7. altas(ajax)控件(二十):让BulletedList拥有客户端索引、分页和排序的控件
  8. linux下安装nginx的采坑记录
  9. 如何将word表结构转换为excel表格,最终转换为PowerDesigner格式
  10. 前端集成解决方案(转)