본문 바로가기

C

c++ O(N)으로 2D matrix 원소 찾기

코드 >>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <array>
#include <vector>
 
std::vector<int> findElementInArray(std::vector<std::vector<int>>& nums, int target)
{
    int size = (int)nums.size();
    int pivot_x = size-1;
    int pivot_y = 0;
    std::vector<int> array;
    
    while ((pivot_x >= 0&& (pivot_y <= 3))
    {
        if (nums[pivot_y][pivot_x] == target)
        {
            array.push_back(pivot_x);
            array.push_back(pivot_y);
            break;
        }
        else if (nums[pivot_y][pivot_x] < target)
        {
            pivot_y++;
        }
        else
        {
            pivot_x--;
        }
    }
    
    array.push_back(-1);
    array.push_back(-1);
    return array;
}
 
int main()
{
    int target = 18;
    std::vector<std::vector<int>> nums;
    nums.emplace_back(std::vector<int> {1,2,3,4});
    nums.emplace_back(std::vector<int> {5,6,7,8});
    nums.emplace_back(std::vector<int> {9,10,11,12});
    nums.emplace_back(std::vector<int> {13,14,15,16});
    std::vector<int> pivotArray = findElementInArray(nums, target);
    
    for (const int& pivot : pivotArray)
    {
        std::cout << pivot << " ";
    }
    std::cout << std::endl;
    return 0;
}