1051 高度检查器

题目:

题目链接

学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。

请你返回至少有多少个学生没有站在正确位置数量。该人数指的是:能让所有学生以 非递减 高度排列的必要移动人数。
示例:

输入:[1,1,4,2,1,3]
输出:3
解释:
高度为 4、3 和最后一个 1 的学生,没有站在正确的位置。

提示:

1 <= heights.length <= 100
1 <= heights[i] <= 100

解题思路:

这题难度较小,完全在于对题目的理解,非递减,就是后一个数大于等于前一个数,要求的输出结果是必要移动人数,所以关键还是在于对数据的排序

我们先根据给定的数据复制一份

vector<int> sortList(heights);

再使用上一篇文章中提到的sort()函数进行排序(想要了解的看官可以移步了解一下),使sortList这个容器中的所有数据都是非递减排列的

sort(sortList.begin(), sortList.end());

很简单的两行代码就完成了这题中的大头,最后就只剩下将两个容器中的数据遍历对比,返回不相等的数据个数即可

int count = 0;
for(int i = 0; i < sortList.size(); ++i)
{
    if(sortList[i] != heights[i])
    count++;
}
return count;

上述代码我的提交结果还是想到不错的

执行用时 : 4 ms, 在Height Checker的C++提交中击败了88.09% 的用户
内存消耗 : 8.6 MB, 在Height Checker的C++提交中击败了100.00% 的用户

就到这里,感谢阅读 |ू・ω・` )

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容