目录
1365. 有多少小于当前数字的数字
941. 有效的山脉数组
1207. 独一无二的出现次数
1365. 有多少小于当前数字的数字
vector smallerNumbersThanCurrent(vector& nums) {
vector numsSort = nums;
sort(numsSort.begin(), numsSort.end());
unordered_map record;
// 从后向前赋值,保证下标为第一个出现的元素
for(int i = numsSort.size() - 1; i >= 0; i--) {
record[numsSort[i]] = i;
}
vector res(nums.size());
for (int i = 0; i < nums.size(); i++) {
res[i] = record[nums[i]];
}
return res;
}
941. 有效的山脉数组
bool validMountainArray(vector& arr) {
// 双指针法
if (arr.size() <= 2) return false;
int left = 0;
int right = arr.size() - 1;
while (left < arr.size() - 1 && arr[left + 1] > arr[left]) {
left++;
}
while (right > 0 && arr[right - 1] > arr[right]) {
right--;
}
if (left == right && left != 0 && right != arr.size() - 1) return true;
else return false;
}
1207. 独一无二的出现次数
bool uniqueOccurrences(vector& arr) {
unordered_map arrCount;
for (int i : arr) {
arrCount[i]++;
}
set count;
for (auto it = arrCount.begin(); it != arrCount.end(); it++) {
count.insert(it->second);
}
if (arrCount.size() == count.size()) return true;
else return false;
}
bool validMountainArray(vector& arr) { // 双指针法 if (arr.size() <= 2) return false; int left = 0; int right = arr.size() - 1; while (left < arr.size() - 1 && arr[left + 1] > arr[left]) { left++; } while (right > 0 && arr[right - 1] > arr[right]) { right--; } if (left == right && left != 0 && right != arr.size() - 1) return true; else return false; }



