题目:https://leetcode-cn.com/problems/you-le-yuan-de-mi-gong/

题目概述:要求按给定的LR方向走完全部的点。

题目给定方向只有"LR",那么我们可以构造一种方法:
如果下一步是“L”,那么我们可以选择最右边的点,这样最右边的点下一步肯定是向左走。
相应的,下一步是“R”,那么我们可以选择最左边的点,这样最左边的点下一步肯定是向右走。
起点的话选择最左边的点(看习惯)
计算叉积的值:x1 * y2- x2 * y1
如果向量AB(x1,y1)向量AC(x2,y2)做叉积的值>0,那么向量AB在向量AC的右边(顺时针方向),如果<0,那么向量AB在向量AC的左边(逆时针方向)。

class Solution {//返回ab向量int[] Sub(int[] a,int[] b){return new int[]{a[0]-b[0],a[1]-b[1]};}//计算a,b向量的叉积int Cross(int[] a,int[] b){return a[0]*b[1]-a[1]*b[0];}public int[] visitOrder(int[][] points, String direction) {int start=0;int n=points.length;boolean vis[]=new boolean[n];//选择最左边的点为起点for(int i=0;i<n;i++)    if(points[i][0]<points[start][0])   start=i;int[] ans=new int[n];ans[0]=start;vis[start]=true;for(int i=0;i<direction.length();i++){char dir=direction.charAt(i);int next=-1;for(int j=0;j<n;j++){if(vis[j])  continue;if(dir=='L'){if(next==-1||Cross(Sub(points[start],points[next]),Sub(points[start],points[j]))<0)next=j;}else if(dir=='R'){if(next==-1||Cross(Sub(points[start],points[next]),Sub(points[start],points[j]))>0)next=j;}}ans[i+1]=next;vis[next]=true;start=next;}// 加上最后一个点for(int i=0;i<n;i++)    if(!vis[i])ans[n-1]=i;return ans;}
}

Leetcode.LCP 15. 游乐园的迷宫 构造相关推荐

  1. ⭐算法入门⭐《二分枚举》简单15 —— LeetCode LCP 18. 早餐组合

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   小扣在秋日市集选择了一 ...

  2. leetcode系列--15.三数之和

    leetcode 第15题 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三 ...

  3. LeetCode——LCP 29. 乐团站位[简单]——分析及代码(Java)

    LeetCode--LCP 29. 乐团站位[简单]--分析及代码[Java] 一.题目 二.分析及代码 1. 直接计算 (1)思路 (2)代码 (3)结果 三.其他 一.题目 某乐团的演出场地可视作 ...

  4. LCP 16. 游乐园的游览计划

    LCP 16. 游乐园的游览计划 题目 又到了一年一度的春游时间,小吴计划去游乐场游玩 1 天,游乐场总共有 N 个游乐项目,编号从 0 到 N-1.小吴给每个游乐项目定义了一个非负整数值 value ...

  5. JAVA程序设计:游乐园的迷宫(LCP 15)

    小王来到了游乐园,她玩的第一个项目是模拟推销员.有一个二维平面地图,其中散布着 N 个推销点,编号 0 到 N-1,不存在三点共线的情况.每两点之间有一条直线相连.游戏没有规定起点和终点,但限定了每次 ...

  6. LeetCode题解(LCP15):游乐园的迷宫(Python)

    题目:原题链接(困难) 标签:贪心算法.几何.数学 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(N2)O(N^2)O(N2) O(N)O(N)O(N) 1996ms (1 ...

  7. leetcode LCP 07.传递信息

    原题 LCP 07.传递信息 题解 方法一 动态规划 动态规划说明某一种状态一定与前一种或者前几种状态有关.我们不妨设立一个二维数组ans,其中ans[j][i]表示的是,从0开始,通过j+1步到达i ...

  8. LeetCode LCP 18. 早餐组合 JAVA

    小扣在秋日市集选择了一家早餐摊位,一维整型数组 staple 中记录了每种主食的价格,一维整型数组 drinks 中记录了每种饮料的价格.小扣的计划选择一份主食和一款饮料,且花费不超过 x 元.请返回 ...

  9. LeetCode LCP 07. 传递信息 / NC111 最大数 / NC16 判断二叉树是否对称 / NC13 二叉树的最大深度

    祝我党百年华诞生日快乐 LCP 07. 传递信息 2021.7.1 每日一题 题目描述 小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:有 n 名玩家,所有玩家编号分别为 0 - n-1 ...

最新文章

  1. 互联网1分钟 | 0117 IBM入驻上海张江人工智能岛;IoT业务将成为小米新支撑点
  2. 数据库MySQL--基础查询
  3. 公众平台模板消息所在行业_微信公众号模板消息功能怎么快速推送?
  4. python3 整除_python如何整除
  5. 转换流/序列化/反序列化
  6. ithoughts怎么自定义样式_微信小程序自定义导航栏组件封装
  7. Mysql 哈希索引
  8. Spring Quartz 框架结构概述(一)[转]
  9. 批量更改文件名的批处理文件
  10. PTA|团体程序设计天梯赛-练习集|JAVA版
  11. 使用SpringBoot做一个班级管理系统
  12. 计算机命令关闭445端口,关闭445端口命令是什么?设置关闭445端口的步骤教程
  13. Python3.6+selenium2.53.6自动化测试_禅道新增BUG(一)(本地禅道)
  14. teststand调用python模块_TestStand 界面重置【小技巧】
  15. 线性分类器定义和局限性
  16. 地铁工程安全生产预警系统价格
  17. oracle index alter,Oracle alter index rebuild 一系列问题
  18. 霆智服务器安装Windows系统,无人值守全自动安装windows系统
  19. 安卓自定义View进阶-Canvas之图片文字
  20. 利用FPGA实现简单的CPU

热门文章

  1. 2022年CMMI认证补贴的常见问题汇总
  2. docker1.10.3-jetty8-jersey1.x 构建微服务
  3. Windows系统bat批处理脚本实现暂停时间延迟方法
  4. S1_B_Inna and New Matrix of Candies
  5. 米兔积木机器人电机是腿吗_这些年给孩子买的东西 篇六:米兔积木机器人开箱晒单...
  6. 2901-View-Gallery
  7. isar舰船 matlab,一种isar图像舰船目标特征提取方法
  8. shell命令执行顺序控制(、||、()、{}用法)
  9. 今日知识资源干货分享抖音短视频文案逻辑关注与框架讲解图
  10. TWinCAT 3 安装