学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。
请你返回至少有多少个学生没有站在正确位置数量。该人数指的是:能让所有学生以 非递减 高度排列的必要移动人数。
示例: 输入:[1,1,4,2,1,3] 输出:3 解释: 高度为 4、3 和最后一个 1 的学生,没有站在正确的位置。
解题思路:
非递减,也就是说递增并且中间可以相等,因此,可以先把正常排序的排列求出来,然后再对比位置
C++
class Solution { public: int heightChecker(vector<int>& heights) { int ret = 0; vector<int> sort_height = heights; // 先找出正常排序 sort(sort_height.begin(),sort_height.end()); int len = heights.size(); for (int i=0; i<len; i++) { if (heights[i] != sort_height[i]) ret++; } return ret; } };