zoukankan      html  css  js  c++  java
  • Check if a given target element is found in the infinite long sorted array.

    package _interview_question
    
    /**
     * Check if a given target element is found in the infinite long sorted array.
     * */
    class Solution8 {
        /**
         * solution: binary search
         * 1. find proper bound
         * 2. apply binary search
         * */
        fun checkElement(nums: IntArray, target: Int): Int {
            var l = 0
            var h = 1
            var value = nums[0]
            //because nums is infinite size, so there is not index out of bound checking
            while (value < target) {
                l = h//store previous h to improve the time complexity in binarySearch
                //check that h*2 not exceeds length of array to prevent OutOfBoundsException
                if (h * 2 < nums.size-1) {
                    h *= 2
                } else {
                    h = nums.size - 1
                }
                //update the value
                value = nums[h]
            }
            return binarySearch(nums,l,h,target)
        }
    
        private fun binarySearch(nums: IntArray, left: Int, right: Int, target: Int): Int {
            if (right >= left) {
                val mid = left + (right - left) / 2
                if (nums[mid] == target) {
                    return mid
                } else if (nums[mid] > target) {
                    //search in left side
                    return binarySearch(nums, left, mid - 1, target)
                } else {
                    return binarySearch(nums, mid + 1, right, target)
                }
            }
            return -1
        }
    }
  • 相关阅读:
    Java中的国际化
    springcloud介绍
    SpringMVC之请求和响应
    JAVA坦克大战系列10-高效雷达(下)
    CF920F SUM and REPLACE
    luoguP4141 消失之物
    luoguP2843 暗杀
    luoguP5521 [yLOI2019] 梅深不见冬
    CF940E Cashback
    CF1051D Bicolorings
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13113631.html
Copyright © 2011-2022 走看看