题目与示例
题目
题目内容
学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。
排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。
给你一个整数数组 heights ,表示 当前学生站位 的高度情况。heights[i] 是这一行中第 i 位学生的高度(下标从 0 开始)。
返回满足 heights[i] != expected[i] 的 下标数量 。
来源:力扣(LeetCode)
示例 1:
输入:heights = [1,1,4,2,1,3]
输出:3
解释:高度:[1,1,4,2,1,3]
预期:[1,1,1,2,3,4]
下标 2 、4 、5 处的学生高度不匹配。
示例 2:
输入:heights = [5,1,2,3,4]
输出:5
解释:高度:[5,1,2,3,4]
预期:[1,2,3,4,5]
所有下标的对应学生高度都不匹配。
示例 3:
输入:heights = [1,2,3,4,5]
输出:0
解释:高度:[1,2,3,4,5]
预期:[1,2,3,4,5]
所有下标的对应学生高度都匹配。
一、思路
由题目可知,最后我们要返回两个数组中不同元素的个数,所以我们先将这两个数组构造出来,然后再对其进行遍历比较即可。
我们将heights中的元素按照顺序压入excepted中,在使用sort()对excepted中的元素进行排序。
最后我们将excepted中的元素与heights中的元素进行遍历比较,记录下元素不同的个数,进行返回。
二、解题代码
解题代码如下:
class Solution {
public:
int heightChecker(vector<int>& heights) {
vector<int> excepted;
int res = 0;
for(int i = 0; i < heights.size(); i++){
excepted.emplace_back(heights[i]);
}
sort(excepted.begin(), excepted.end());
for(int i = 0; i < heights.size(); i++){
if(excepted[i] != heights[i]){
res++;
}
}
return res;
}
};
注:以上部分内容源自力扣,解题方法为个人想法,如有错误还请大家指正