search in 2d matrix and serach minimum in rotated array

import java.io.*;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Collection;
class test
{
    public static void main (String[] args) throws java.lang.Exception
    {
        int[] B = {6,7,8,9,1,2,3,4,5};
        int[][] c = {{1,   3,  5,  7},{10, 11, 16, 20}, {23, 30, 34, 50}};

        System.out.println(search_mini(B));
        System.out.println(search(B,1));
        System.out.println(Arrays.toString(search_2d_matrix(c,30)));
    }

    public static int[] search_2d_matrix(int[][] matrix, int target){
        int row = matrix.length, column = matrix[0].length;
        int begin = 0, end = row * column ;
        int[] result = {-1, -1};

        while (begin + 1 < end) {
            int mid = (begin +  end) / 2;
            int number = matrix[mid / column][mid % column];
            if (number == target) {
                result[0] = mid / column;
                result[1] = mid % column;
                return result;
            } else if (number < target) {
                begin = mid;
            } else {
                end = mid;
            }
        }
        return result;
    }

    public static int search_mini(int[] A){
        int begin = 0, end = A.length - 1;
        while (begin < end && A[begin] >= A[end]) {
            int mid = (begin + end) / 2;
            if (A[mid] > A[end]) {
                begin = mid + 1;
            } else if (A[mid] < A[begin]) {
                end = mid;
            } else {   // A[begin] == A[mid] == A[end]
             begin = begin + 1;
            }
        }
         return A[begin];
    }

    public static int search(int[] A, int target){
        int begin = 0;
        int end = A.length ;
        while(begin < end){
            int p = (end + begin) / 2;
            if(A[p] == target) return p;
            else if(A[p] > A[begin]  ){
                if(target >= A[begin] && target < A[p]){
                    end = p;
                }
                else begin = p + 1;
            }
            else{
                if(target > A[p] && target <= A[end - 1] ){
                    begin = p + 1;
                }
                else end = p;
            }

        }
        return -1;
    }
}
时间: 2024-10-23 18:17:55

search in 2d matrix and serach minimum in rotated array的相关文章

leetcode Search a 2D Matrix II

题目连接 https://leetcode.com/problems/search-a-2d-matrix-ii/ Search a 2D Matrix II Description Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted in ascend

【LeetCode】240. Search a 2D Matrix II

Search a 2D Matrix II Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted in ascending from left to right. Integers in each column are sorted in ascendin

leetcode——Search a 2D Matrix 二维有序数组查找(AC)

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted from left to right. The first integer of each row is greater than the last integer of the previous ro

[leedcode 240] Search a 2D Matrix II

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted in ascending from left to right. Integers in each column are sorted in ascending from top to bottom.

leetcode_74题——Search a 2D Matrix(数组查找)

Search a 2D Matrix Total Accepted: 40009 Total Submissions: 127082My Submissions Question Solution Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted fr

LeetCode: Search a 2D Matrix 解题报告

Search a 2D Matrix Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted from left to right. The first integer of each row is greater than the last integer

[LintCode] Search a 2D Matrix

Search a 2D Matrix Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted from left to right. The first integer of each row is greater than the last integer

[leetcode]Search a 2D Matrix @ Python

原题地址:https://oj.leetcode.com/problems/search-a-2d-matrix/ 题意: Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted from left to right. The first integer o

【Leetcode】Search a 2D Matrix

Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted from left to right. The first integer of each row is greater than the last integer of the previous ro