【JAVA】【刷题子】1051.高度检查器

176 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

一、题目与题目分析

题目

  学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。
  给你一个整数数组 heights ,表示 当前学生站位 的高度情况。heights[i] 是这一行中第 i 位学生的高度(下标从 0 开始)。
  返回满足 heights[i] != expected[i] 的 下标数量 。
image.png
  (题目来源:力扣:1051.高度检查器

题目分析

  这道题是题目说得花里胡哨的,其实就是很简单的,就是说,给一个数组(一串数),升序排序后,找出统计和原数组不同的数的个数。
  例1:有“1,3,2”三个数,排序后是“1,2,3”,这时候,不同的就有第二个和第三个数字~ 所以答案输出也就是2.
  例2:有“5,3,1,2,4”五个数,排序后是“1,2,3,4,5”,五个数的位置都不同了,所以答案也就是5.
  例3:有“1,1,1,1”四个数,排序后还是“1,1,1,1”,并没有变化,答案也就是4.

二、整体逻辑与主要代码

题目分析已经比较清楚了,接下来我们进入代码设计。

整体逻辑

  首先,① 复制一份原有数组; ② 在有两份数组后,升序排序其中一个数组; ③ 遍历数组,对比两个数组的每个数是否相等,不相等就统计下来。 ④ 最终,统计出来的个数,就是所求的答案了!

主要代码

整体逻辑清晰了之后,同时也有较清楚的注释。直接来看代码吧! (如有不懂的或者更好的建议,欢迎评论区分享友友的看法哈~)

class Solution {
	public int heightChecker(int[] heights) {
		// 记录不相等数值的个数
		int countNotSame = 0;
		// 复制一份数组
		int[] temp = heights.clone();
		// 排序
		Arrays.sort(temp);
		for (int i = 0; i < heights.length; i++) {
			// 遍历
			if (heights[i] != temp[i]) {
				// 当不相等的时候,计数
				countNotSame++;
			}
		}
                // 返回统计后的个数
		return countNotSame;
	}
}

三、结果展示

结果展示.png

四、人生总结

在哪里跌倒了,不一定非得爬起来;也可以适当躺一躺再起来。

题目数据库

Gitee:传送门

文章小尾巴

文章写作、模板、文章小尾巴可参考:《写作“小心思”》
  感谢你看到最后,最后再说两点~
  ①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
  ②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
  我是南方者,一个热爱计算机更热爱祖国的南方人。

  (文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)