zoukankan      html  css  js  c++  java
  • 1365. How Many Numbers Are Smaller Than the Current Number

    package LeetCode_1365
    
    import java.util.*
    
    /**
     * 1365. How Many Numbers Are Smaller Than the Current Number
     * https://leetcode.com/problems/how-many-numbers-are-smaller-than-the-current-number/description/
     *
     * Given the array nums, for each nums[i] find out how many numbers in the array are smaller than it. That is, for each nums[i] you have to count the number of valid j's such that j != i and nums[j] < nums[i].
    Return the answer in an array.
    
    Example 1:
    Input: nums = [8,1,2,2,3]
    Output: [4,0,1,1,3]
    Explanation:
    For nums[0]=8 there exist four smaller numbers than it (1, 2, 2 and 3).
    For nums[1]=1 does not exist any smaller number than it.
    For nums[2]=2 there exist one smaller number than it (1).
    For nums[3]=2 there exist one smaller number than it (1).
    For nums[4]=3 there exist three smaller numbers than it (1, 2 and 2).
     * */
    class Solution {
        /*
        * solution: binary search, Time complexity:O(nlogn), Space complexity:O(n)
        * */
        fun smallerNumbersThanCurrent(nums: IntArray): IntArray {
            val result = IntArray(nums.size)
            val copy = Arrays.copyOf(nums,nums.size)
            copy.sort()
            for (i in nums.indices) {
                result[i] = binarySearch(copy,nums[i])
            }
            return result
        }
    
        private fun binarySearch(nums: IntArray, target: Int): Int {
            var left = 0
            var right = nums.size - 1
            while (left <= right) {
                val mid = (left + right) / 2
                if (nums[mid] < target) {
                    //search in right side
                    left = mid + 1
                } else {
                    //search in left side
                    right = mid - 1
                }
            }
            //return index
            return left
        }
    }
  • 相关阅读:
    AngularJS7那些不得不说的事故
    Python和C++的混合编程(使用Boost编写Python的扩展包)
    为OPENCV添加freetype支持并显示中文字符(在mac上编译opencv及contrib库)
    OpenProject基础使用介绍
    负载均衡
    如何搭建wordpress ,wecenter
    nginx 模块
    Nginx
    http 协议
    ssh
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13045332.html
Copyright © 2011-2022 走看看