关于阶梯数问题的复盘

栏目: IT技术 · 发布时间: 4年前

内容简介:昨天被问到了一道「阶梯数」的问题,题目还原如下:给定一个整数数列,如果它满足取任意相邻两位上的值,只要满足差的绝对值都为 1,则称其为阶梯数。现在回头一想是很基础的题目,可惜当场答得细碎。解题前我们得先找一些「甩锅」的理由:

昨天被问到了一道「阶梯数」的问题,题目还原如下:

给定一个整数数列,如果它满足取任意相邻两位上的值,只要满足差的绝对值都为 1,则称其为阶梯数。

复盘

现在回头一想是很基础的题目,可惜当场答得细碎。解题前我们得先找一些「甩锅」的理由:

  • 过度思考
    • 总是觉得出题者的意图附带有特别的含义
  • 思维惯性
    • 之前做的一些分类题,回文也好,DFS 也好,习惯将解题思路往里面套。
  • 心态问题
    • 表达能力作为输出的一种方式,刻意练习「小黄鸭」模式是必要的。

针对第一点,要意识到出题者对于白板编程的要求关注的是被提问者的解题思路,复杂难解的题目并不是考察的关键指标,观察对方遇到问题的思考过程比结果重要。在这短时间内了解一个人的行为与思考模式也算普遍且相对有效的手段。

对于如果处理思维惯性。选择忘记之前的经验不失为一种最好的办法。经验可以帮助处理已有的问题模式,但无法处理新类型的窘境。所谓无招胜有招,张三丰把太极剑传授给张无忌时,要他将招数尽数忘掉才算学会:

张无忌学第一遍时,他忘记了大半剑招;学第二遍时,他还有几招没忘;学第三遍时,他才把所有剑招忘记。《倚天屠龙记》原著描写如下:张无忌在殿上缓缓踱了一个圈子,沉思半晌,又缓缓踱了半个圈子,抬起头来,满脸喜色,叫道:「这我可全忘了,忘得干干净净的了。」张三丰道:「不坏,不坏!忘得真快,你这就请八臂神剑指教罢!」

至于最后的心态,要认识到慌乱对于求解并无裨益。需要从结果论调整为过程论,「连续的」到达目的地而不是「离散的」到达才是前进的方式。只要觉得方向没有问题,剩下的都是时间上的问题。

题解

解题思路为:一次遍历,每次的循环中取相邻数进行两两比较,只要中途不中断完成循环即为阶梯数:

public static boolean valid(String str) {
	char[] arr = str.toCharArray();
	if (arr.length == 0) {
		return false;
	}

	for (int i = 0; i < arr.length - 1; i++) {
		int pre = Integer.parseInt(String.valueOf(arr[i]));
		int next = Integer.parseInt(String.valueOf(arr[i + 1]));

		if (Math.abs(pre - next) != 1) {
			return false;
		}
	}

	return true;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法分析

数据结构与算法分析

韦斯 (Mark Allen Weiss) / 机械工业出版社 / 2009-1-1 / 55.00元

本书是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。 随着计算机速度的不断增加和功能的日益强大,人们对有效编程和算法分析的要求也不断增长。本书把算法分析与最有效率的Java程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。一起来看看 《数据结构与算法分析》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具