给定N对集合作为映射中的(键,值)对和整数K ,任务是找到映射到给定值K的所有键。如果没有键值映射到K,则打印“ -1” 。
例子:
Input: Map[] = { {1, 3}, {2, 3}, {4, -1}, {7, 2}, {10, 3} }, K = 3
Output: 1 2 10
Explanation:
The 3 key value that is mapped to value 3 are 1, 2, 10.
Input: Map[] = { {1, 3}, {2, 3}, {4, -1}, {7, 2}, {10, 3} }, K = 10
Output: -1
Explanation:
There is no any key value that is mapped to value 10.
方法:想法是遍历给定的映射并打印映射到给定值K的所有键值。以下是用于查找所有键值的循环:
for(auto &it : Map) {
if(it.second == K) {
print(it.first)
}
}
如果没有用K映射的值,则打印“ -1” 。
下面是上述方法的实现:
CPP
// C++ program for the above approach
#include "bits/stdc++.h"
using namespace std;
// Function to find the key values
// according to given mapped value K
void printKey(map& Map,
int K)
{
// If a is true, then we have
// not key-value mapped to K
bool a = true;
// Traverse the map
for (auto& it : Map) {
// If mapped value is K,
// then print the key value
if (it.second == K) {
cout << it.first << ' ';
a = false;
}
}
// If there is not key mapped with K,
// then print -1
if (a) {
cout << "-1";
}
}
// Driver Code
int main()
{
map Map;
// Given map
Map[1] = 3;
Map[2] = 3;
Map[4] = -1;
Map[7] = 2;
Map[10] = 3;
// Given value K
int K = 3;
// Function call
printKey(Map, K);
return 0;
}
输出:
1 2 10
时间复杂度: O(N) ,其中N是存储在地图中的对的数量。这是因为我们一次遍历所有对。
辅助空间: O(1)
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。