题目:
题目链接
学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。
请你返回至少有多少个学生没有站在正确位置数量。该人数指的是:能让所有学生以 非递减 高度排列的必要移动人数。
示例:
输入:[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% 的用户
就到这里,感谢阅读 |ू・ω・` )