Zhilong Li 4 lat temu
commit
51053b1170
2 zmienionych plików z 57 dodań i 0 usunięć
  1. 4 0
      383_ransom_note.cpp
  2. 53 0
      74_search_a_2d_matrix.cpp

+ 4 - 0
383_ransom_note.cpp

@@ -0,0 +1,4 @@
+//
+// Created by Li Zhilong on 11/6/21.
+//
+

+ 53 - 0
74_search_a_2d_matrix.cpp

@@ -0,0 +1,53 @@
+#include <vector>
+#include <iostream>
+
+using namespace std;
+class Solution
+{
+public:
+    bool searchMatrix(vector<vector<int> > &matrix, int target)
+    {
+        // vector<int> flat_mat(matrix.size()*matrix[0].size());
+        // cout<<matrix.back();
+        if (matrix.back().back() < target)
+        {
+            cout << "Not possible";
+            return false;
+        }
+        int left_prt = 0;
+        int right_prt = matrix.size() * matrix[0].size();
+        int mat_row_num = matrix[0].size();
+        while (left_prt <= right_prt)
+        {
+            int mid = (left_prt + right_prt) / 2;
+            if (matrix[mid/ mat_row_num][mid % mat_row_num] == target)
+                return true;
+            else if (matrix[mid / mat_row_num][mid % mat_row_num] > target)
+                right_prt = mid-1;
+            else if (matrix[mid / mat_row_num][mid % mat_row_num] < target)
+                left_prt = mid+1;
+
+        }
+        return false;
+    }
+};
+
+int main()
+{
+    Solution s;
+    int test_data[16] = {1, 3, 5, 7, 10, 11, 16, 20, 23, 30, 34, 60, 62, 66, 72, 192};
+
+    vector<vector<int> > test_mat(3, vector<int>(4));
+    for (int i = 0; i < 12; i++)
+    {
+        test_mat[i / test_mat[0].size()][i % test_mat[0].size()] = test_data[i];
+    }
+    // for (int i = 0; i < 4; i++)
+    // {
+    //     for (int j = 0; j < 4; j++)
+    //     {
+    //         cout << test_mat[i][j] << ' ';
+    //     }
+    // }
+    cout << s.searchMatrix(test_mat, 3);
+}