📜  在C ++中按地图中的值搜索

📅  最后修改于: 2021-05-31 21:09:20             🧑  作者: Mango

给定N对集合作为映射中的(键,值)对和整数K ,任务是找到映射到给定值K的所有键。如果没有键值映射到K,则打印“ -1”
例子:

方法:想法是遍历给定的映射并打印映射到给定值K的所有键值。以下是用于查找所有键值的循环:

如果没有用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等的更多准备工作,请参阅“完整面试准备课程”