使用 std::vector 在 2D 矩阵中搜索元素

发布于 2025-01-15 06:19:58 字数 370 浏览 0 评论 0原文

bool findInMatrix(int x, vector<vector<int>> &arr)
{
    //    Write your code here.
    for(int i = 0;i<arr.size();i++)
    {
        for(int j = 0;j<arr[0].size();j++)
        {
            if(arr[i][j] == x)
                return true;    
        }
    }
    return false;
}

任何人都可以帮助我解决这个问题,我能够通过所有测试用例,但得到 TLE!

bool findInMatrix(int x, vector<vector<int>> &arr)
{
    //    Write your code here.
    for(int i = 0;i<arr.size();i++)
    {
        for(int j = 0;j<arr[0].size();j++)
        {
            if(arr[i][j] == x)
                return true;    
        }
    }
    return false;
}

Can anybody help me with this soln, I am able to pass all the testcases but getting TLE!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回眸一笑 2025-01-22 06:19:58

内部for循环似乎有问题。当您应该循环第 i 个向量的大小时,您正在循环第 0 个向量的大小。每个向量可以有不同的大小。

bool findInMatrix(int x, vector<vector<int>> &arr) {

    for(int i = 0; i < arr.size(); i++) {
        for(int j = 0; j < arr[i].size(); j++) {
            if(arr[i][j] == x) {
                return true;    
            }
        }
    }
    return false;
}

There seems to be a problem in the inner for loop. You are looping over the size of the 0th vector, when you should be looping over the size of ith vector. Each vector can have a different size.

bool findInMatrix(int x, vector<vector<int>> &arr) {

    for(int i = 0; i < arr.size(); i++) {
        for(int j = 0; j < arr[i].size(); j++) {
            if(arr[i][j] == x) {
                return true;    
            }
        }
    }
    return false;
}
柏拉图鍀咏恒 2025-01-22 06:19:58

可能您需要使用 STL 的 find 这可能是最佳的。


#include <iostream>
#include <vector>
#include <algorithm>

using std::vector,std::find;

bool findInMatrix(int x, vector<vector<int>> &arr)
{
    //    Write your code here.     
    for(auto& rows:arr){    
        auto it = find(rows.begin(), rows.end(), x);
        if (it != rows.end())
        {
            return true;
        }   
    }     
    
    return false;
}


int main(){
    
    vector<vector<int>> arr;
    int rows = 5;
    int cols = 4;

    // init with random data
    for(int i = 0; i<rows;i++){
        vector<int> elems;
         for(int j = 0; j<cols;j++){            
            elems.push_back(rand()%100); 
        }  
        arr.push_back(elems);
    }

    // peek the data
    for(const auto & rows:arr){
        for(const auto &elem:rows ){
            std::cout<<elem<<" ";
        }
        std::cout<<"\n";
    }

    int x = arr[3][2];

    std::cout<<"searching for "<<x<<"\n";
    // search for the element
    std::cout<<findInMatrix(x,arr)<<"\n"; // returns true

    std::cout<<findInMatrix(9999,arr)<<"\n"; // returns false

    return 0;
}


May be you need to use STL 's find which could be optimal.


#include <iostream>
#include <vector>
#include <algorithm>

using std::vector,std::find;

bool findInMatrix(int x, vector<vector<int>> &arr)
{
    //    Write your code here.     
    for(auto& rows:arr){    
        auto it = find(rows.begin(), rows.end(), x);
        if (it != rows.end())
        {
            return true;
        }   
    }     
    
    return false;
}


int main(){
    
    vector<vector<int>> arr;
    int rows = 5;
    int cols = 4;

    // init with random data
    for(int i = 0; i<rows;i++){
        vector<int> elems;
         for(int j = 0; j<cols;j++){            
            elems.push_back(rand()%100); 
        }  
        arr.push_back(elems);
    }

    // peek the data
    for(const auto & rows:arr){
        for(const auto &elem:rows ){
            std::cout<<elem<<" ";
        }
        std::cout<<"\n";
    }

    int x = arr[3][2];

    std::cout<<"searching for "<<x<<"\n";
    // search for the element
    std::cout<<findInMatrix(x,arr)<<"\n"; // returns true

    std::cout<<findInMatrix(9999,arr)<<"\n"; // returns false

    return 0;
}


~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文