[LeetCode][JavaScript]Self Crossing
2016-02-25 23:34
811 查看
Self Crossing
You are given an array x ofnpositive 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 = [code][2, 1, 1, 2],
Return true (self crossing)
[/code]
Example 2:
Given x = [code][1, 2, 3, 4],
Return false (not self crossing)
[/code]
Example 3:
Given x = [code][1, 1, 1, 1],
Return true (self crossing)[/code]
https://leetcode.com/problems/self-crossing/
逆时针画线,求线是否有交叉。
看图,三种情况,对应了代码中的注释。
/** * @param {number[]} x * @return {boolean} */ var isSelfCrossing = function(x) { for(var i = 3; i < x.length; i++){ //i. [2, 1, 1, 2] if(x[i - 3] && x[i] >= x[i - 2] && x[i - 1] <= x[i - 3]) return true; //ii. [1, 1, 2, 1, 1] if(x[i - 4] && x[i - 3] === x[i - 1] && x[i - 4] + x[i] >= x[i - 2]) return true; //iii. [1, 1, 2, 2, 1, 1] if(x[i - 5] && x[i - 4] <= x[i -2] && x[i] + x[i - 4] >= x[i -2] && x[i - 3] >= x[i - 1] && x[i - 5] + x[i - 1] >= x[ i - 3]) return true; } return false; };
相关文章推荐
- JS下实现加号减号的数量加一减一
- EL表达式杂谈
- 进阶学习js中的执行上下文
- javascript在IE下遇到的中文乱码与缓存问题
- js中trim的实现
- js基础
- JSBinding+SharpKit / 菜单介绍
- JSBinding + SharpKit / 编译 Cs 成 Js
- JS中作用域的问题
- JS中怎么使用EL表达式
- package.json详解
- 编写JavaScript函数解析查询字符串
- ajax 实现 JavaScript与jsp数据的传递
- JSTL应用开发
- HTML,CSS和Javascript综合练习-1
- 160225、解决纯js文件国际化的问题
- JSON.parse()和JSON.stringify()
- JavaScript学习笔记(3)——JavaScript与HTML的组合方式
- jsp 基础知识
- SetInterval()与setTimeout()的区别