持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情
一、题目与题目分析
题目
学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。
给你一个整数数组 heights ,表示 当前学生站位 的高度情况。heights[i] 是这一行中第 i 位学生的高度(下标从 0 开始)。
返回满足 heights[i] != expected[i] 的 下标数量 。
(题目来源:力扣: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;
}
}
三、结果展示
四、人生总结
在哪里跌倒了,不一定非得爬起来;也可以适当躺一躺再起来。
题目数据库
Gitee:传送门
文章小尾巴
文章写作、模板、文章小尾巴可参考:《写作“小心思”》
感谢你看到最后,最后再说两点~
①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
我是南方者,一个热爱计算机更热爱祖国的南方人。
(文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)