LeetCode高频题:多多发明了一个跳棋游戏,n个格子组成,格子上有字符‘L’或‘R’,遇到L走i-xi,遇到R走i+xi,问每个位置为起点,到游戏结束,分别需要走多少步?

提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目
互联网大厂们在公司养了一大批ACM竞赛的大佬们,吃完饭就是设计考题,然后去考应聘人员,你要做的就是学基础树结构与算法,然后打通任督二脉,以应对波云诡谲的大厂笔试面试题!
你要是不扎实学习数据结构与算法,好好动手手撕代码,锻炼解题能力,你可能会在笔试面试过程中,连题目都看不懂!比如华为,字节啥的,足够让你读不懂题


文章目录

  • LeetCode高频题:多多发明了一个跳棋游戏,n个格子组成,格子上有字符‘L’或‘R’,遇到L走i-xi,遇到R走i+xi,问每个位置为起点,到游戏结束,分别需要走多少步?
    • @[TOC](文章目录)
  • 题目
  • 一、审题
  • 二、解题
  • 总结

题目



一、审题

示例:上面


二、解题

我的逻辑是

定义f(arr, i, visited)

从位置i出发,看看能走几步离开棋盘?
其实很简单

Node放俩属性,一个字符LR,一个方数字x

        public static class Node{public char ch;public int x;public Node(char c, int xx){ch = c;x = xx;}}

其余的当i出界,那就是离开了棋盘

走过的位置i用visited标记,如果你又跳回来了,恐怕走不出去了就,返回-1

否则就是见L,走左边,见R走右边,必须走1步,再看看后续能否离开,可以就累加返回,不能返回-1

手撕代码很简单

        //从arr的i位置离开盘子需要多少步?public static int f(Node[] arr, int i, boolean[] visited){if (i < 0 || i >= arr.length) return 0;//离开了,0步if (visited[i]) return -1;//失败了visited[i] = true;//走过if (arr[i].ch == 'L'){int left = f(arr, i - arr[i].x, visited);//去左边return left != -1 ? 1 + left : -1;}else if (arr[i].ch == 'R'){int right = f(arr, i + arr[i].x, visited);//去右边return right != -1 ? 1 + right : -1;}else return -1;//其他字母不行}

然后主函数咋搞?
就是遍历n个位置,每个位置都走一波试试

        public static void main(String[] args) {Scanner in = new Scanner(System.in);int t = in.nextInt();in.nextLine();//回车for (int i = 0; i < t; i++) {int n = in.nextInt();in.nextLine();//回车Node[] arr = new Node[n];//棋盘for (int j = 0; j < n; j++) {String s = in.nextLine();arr[j] = new Node(s.charAt(0), s.charAt(2) - '0');//包装放入}//从左往右收集答案int[] ans = new int[n];for (int j = 0; j < n; j++) {boolean[] visited = new boolean[n];//走过不能走了ans[j] = f(arr, j, visited);//j出发}for (int j = 0; j < n; j++) {if (j != n - 1) System.out.print(ans[j] +" ");else System.out.println(ans[j]);}}}

测试一把:

很OK

不过当时我朋友说只过了10%

有哪个大佬出来指证一波,我这个思路有bug?


总结

提示:重要经验:

1)走过的不能走,就是典型的业务限制类型递归就行
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

LeetCode高频题:多多发明了一个跳棋游戏,n个格子组成,格子上有字符‘L’或‘R’,遇到L走i-xi,遇到R走i+xi,问每个位置为起点,到游戏结束,分别需要走多少步相关推荐

  1. LeetCode高频题:最长公共子序列,玩游戏A和游戏B,两兄弟加起来最多可以获得多少奖品

    LeetCode高频题:最长公共子序列,玩游戏A和游戏B,两兄弟加起来最多可以获得多少奖品? 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面 ...

  2. LeetCode高频题29. 两数相除:不用加减乘除号,求加法,减法,乘法,除法

    LeetCode高频题29. 两数相除 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批ACM竞赛 ...

  3. LeetCode高频题300. 最长递增子序列

    LeetCode高频题300. 最长递增子序列 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批A ...

  4. LeetCode高频题76. 最小覆盖子串:欠账还债还款问题,子串考虑i开头的情况所有答案更新一波

    LeetCode高频题76. 最小覆盖子串:欠账还债还款问题,子串考虑i开头的情况所有答案更新一波 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从 ...

  5. LeetCode高频题:二叉树的锯齿形(Z字形,之字形)层序遍历

    LeetCode高频题:二叉树的锯齿形(Z字形,之字形)层序遍历 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们 ...

  6. LeetCode高频题:《逆水寒》在地图的制作中,美术在地图上刷一片连通区域,连通区域自动填充,请你判断给定几个点位置,他们是否属于被刷区域

    LeetCode高频题:<逆水寒>在地图的制作中,美术在地图上刷一片连通区域,连通区域自动填充,请你判断给定几个点位置,他们是否属于被刷区域? 提示:本题是系列LeetCode的150道高 ...

  7. LeetCode高频题:戈壁滩种树,一排n棵树,至少有k棵树存活时,最终形成的风景线有多少不同的情况

    LeetCode高频题:戈壁滩种树,一排n棵树,至少有k棵树存活时,最终形成的风景线有多少不同的情况 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是 ...

  8. LeetCode高频题37. 解数独

    LeetCode高频题37. 解数独 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批ACM竞赛的 ...

  9. LeetCode高频题33. 搜索旋转排序数组

    LeetCode高频题33. 搜索旋转排序数组 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面改编而来的题目 互联网大厂们在公司养了一大批A ...

最新文章

  1. activemq无账户密码登录配置修改
  2. 奖牌分配/Median Pyramid Hard
  3. IOS之使用纯代码push ViewController
  4. POJ1003/1004/1005/1207/3299/2159/1083/3094/2388解题(刷一波水题)
  5. Ubuntu18.04搭建Web服务器
  6. 《视觉SLAM十四讲》课后习题—ch7(更新中……)
  7. oracle10g sql on条件,ORACLE 10G使用SQLNET.ORA限制IP登陆
  8. 如何把后缀为.mdf的文件打开
  9. 分布式系统架构的本质
  10. 使用UICollectionView实现首页的滚动效果
  11. php 抓取 百度百科,百度百科词条内容爬取-爬虫大作业
  12. java如何快速标记条_【JAVA】如何利用TODO任务标签高效管理代办代码
  13. createjs初学-关于Ticker
  14. 软件测试完后,运行后还有BUG,测试人员就应该背锅吗?
  15. 趣文:三分钟了解敏捷开发
  16. 鸭子模型_如果它看起来像鸭子,嘎嘎像鸭子,但需要电池-您的抽象错误
  17. tableau:凹凸图
  18. 火狐linux版更改语言,修改Firefox火狐语言 添加火狐语言包的方法
  19. x265-1.7版本-x265.h代码注释
  20. 【报告分享】2020年K12在线教育行业数据研究报告-极光(附下载)

热门文章

  1. 学习,不是一件发愁的事儿
  2. 数据是啥?数据都去哪儿了?
  3. sparksql Error in query: resolved attribute(s)报错分析
  4. 帧间预测:运动估计和运动补偿
  5. CyclicBarrier 召唤七龙珠
  6. CentOS7的下载安装教程
  7. 没有计算机证书不能毕业证吗,大学期间“必须”要有的3个证书,不然无法毕业,后悔都来不及...
  8. java开发对学位证_软件开发人员真的需要学位吗?
  9. 编程与世界观——兼谈阿尔法狗
  10. 用计算机视觉来做异常检测