335-自交叉

标签: 算法 数据结构 leetcode
16人阅读 评论(0) 收藏 举报
分类:

Descritpion:

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)

问题描述

给定一个正整数数组x。从(0, 0)出发,向北走x[0],向西走x[1],向南走x[2],向东走x[3],向北走x[4],依次类推…换言之,每次逆时针改变运动方向。

写出一个单次循环判断路径是否相交的算法,注意空间复杂度为O(1)


问题分析

可以看看这个链接:
https://leetcode.com/problems/self-crossing/discuss/79141/Another-python

这张图很形象
这里写图片描述

6个点为一组,判断是否相交。

以第一轮为例,判断d是否与a相交。判断f是否与a相交


解法

class Solution {
    public boolean isSelfCrossing(int[] x) {
        int len = x.length;

        if(len <= 3)    return false;
        //每轮迭代,六个点对应更新
        for(int i = 3;i < len;i++){
            //判断d是否与a相交
            if(x[i] >= x[i - 2] && x[i - 3] >= x[i - 1])    return true;
            //判断e是否与a相交
            if(i >= 4){
                if(x[i - 1] == x[i - 3] && x[i] + x[i - 4] == x[i - 2]) return true;
            }
            //判断f是否与a相交
            if(i >= 5){
                if(x[i - 2] >= x[i - 4] && x[i] >= x[i - 2] - x[i - 4] && x[i - 1] >= x[i - 3] - x[i - 5] && x[i - 1] <= x[i - 3])  return true;
            }
        }

        return false;
    }
}
查看评论

Crossing River

Crossing River题解
  • XNDXFSZX
  • XNDXFSZX
  • 2016-01-25 10:20:07
  • 836

贪心基础/C-Crossing River

C-Crossing River
  • dawn_33
  • dawn_33
  • 2017-08-02 17:01:01
  • 94

zero-crossing detector

这个算子的作用就是从图像中提取出零交叉点。所谓零交叉点,是指在正弦函数图像中的过零点,也就是上一刻为正,下一刻就变成负的那个点,这样一想自然就是x轴上的点了。但是在图像中稍微有些不同。  那么在图像...
  • jasonzzj
  • jasonzzj
  • 2016-12-21 12:15:15
  • 1025

Zero Crossing Detector

http://homepages.inf.ed.ac.uk/rbf/HIPR2/zeros.htm Zero Crossing Detector Common Names: Zer...
  • rocky69
  • rocky69
  • 2012-08-03 23:23:22
  • 1647

Avalon-MM Clock Crossing Bridge

Avalon-MM Clock Crossing Bridge The Avalon-MM Clock Crossing Bridge transfers Avalon-MM commands an...
  • stephenhawke
  • stephenhawke
  • 2014-02-19 15:09:16
  • 1906

POJ1700:Crossing River

#include #include #include using namespace std; int main() { int a[1005],i,t,n,sum; scan...
  • libin56842
  • libin56842
  • 2013-11-24 16:00:43
  • 2523

【POJ1700】Crossing River 贪心,附贪心问题的一系列详细解析

题意:一群人过河,船每次只能装两人,每次过河时间为两人权值较大的那个。 题解:     这种题的贪心策略往往不是很好想,这个时候我们就需要依照尽量逼近正解的思路,进行多种贪心,在每种贪心都保证正确...
  • Vmurder
  • Vmurder
  • 2014-11-05 16:48:52
  • 1047

leetcode 335 : Self Crossing : 正反情况思考

335. Self Crossing My Submissions Question Total Accepted: 1941 Total Submissions: 11380 Difficu...
  • smileyk
  • smileyk
  • 2016-03-04 22:01:11
  • 990

【NOI OJ】 4.6 贪心 702 Crossing River(过河)

描述 A group of N people wishes to go across a river with only one boat, which can at most carry two p...
  • C20190101ZJX
  • C20190101ZJX
  • 2016-08-25 21:33:27
  • 1282

River Crossing

River Crossing 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 Afandi is herding N sheep across the exp...
  • l2533636371
  • l2533636371
  • 2017-04-19 19:34:02
  • 110
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 2万+
    积分: 6812
    排名: 4307
    博客专栏
    文章存档
    最新评论