• 有多少小于当前数字的数字


    地址:https://leetcode-cn.com/problems/how-many-numbers-are-smaller-than-the-current-number/

    <?php
    
    /**
    给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。
    
    换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。
    
    以数组形式返回答案。
    
     
    
    示例 1:
    
    输入:nums = [8,1,2,2,3]
    输出:[4,0,1,1,3]
    解释:
    对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。
    对于 nums[1]=1 不存在比它小的数字。
    对于 nums[2]=2 存在一个比它小的数字:(1)。
    对于 nums[3]=2 存在一个比它小的数字:(1)。
    对于 nums[4]=3 存在三个比它小的数字:(1,2 和 2)。
    示例 2:
    
    输入:nums = [6,5,4,8]
    输出:[2,1,0,3]
    示例 3:
    
    输入:nums = [7,7,7,7]
    输出:[0,0,0,0]
     
    
    提示:
    
    2 <= nums.length <= 500
    0 <= nums[i] <= 100
     */
    class Solution {
        /**
         1.新建一个数组,对他进行排序,变成[8,3,2,2,1]
         2.键值对互换 ["8"=>0,"3"=>1,"2"=>3,"1"=>4]
         3.获取小于当前数值的个数,因为是排过序的,所以下标就能代表有几个数字比他大
         * ["8"=>5-1-0,"3"=>5-1-1,"2"=>5-1-3,"1"=>5-1-4]
         *  ["8"=>4,"3"=>3,"2"=>1,"1"=>0]
         4.便利原数组,填充数值 [4,0,1,1,3]
         */
        function smallerNumbersThanCurrent1($nums) {
            $tmp_arr = $nums;
            rsort($tmp_arr);
            $tmp_arr = array_flip($tmp_arr);
            $length = count($nums);
    
            foreach ($tmp_arr as $key => $value) {
                $tmp_arr[$key] = $length - 1 -$tmp_arr[$key];
            }
            $arr = [];
    
            foreach ($nums as $value) {
                $arr[] = $tmp_arr[$value];
            }
            return $arr;
        }
        /**
        1 新建一个数组,对他进行排序,变成[1,2,2,3,8]
        2 便利原数组,嵌套便利新数组,新数组的下标等于他前边有多少个比他小的数组
         */
        function smallerNumbersThanCurrent($nums) {
            $old_arr = $nums;
            $new_arr =[];
           sort($old_arr);
           for($i =0;$i<count($nums);$i++){
               foreach ($old_arr as $index=> $num){
                   if ($num == $nums[$i]) {
                       array_push($new_arr,$index);
                       break;
                       }
               }
           }
            return $new_arr;
        }
    }
    $arr = [8,1,2,2,3];
    $arr1 = [7,7,7,7];
    $solution = new Solution();
    var_dump($solution->smallerNumbersThanCurrent($arr));
  • 相关阅读:
    sublime text3中html的使用
    WEB如何入门?各种渗透攻击如何入门?
    考思科认证NA过程的学习笔记
    HTML URL 编码(学习笔记)
    学习HTML过程中的笔记
    必学
    playfair密码
    二三级计算机考试时间
    DAY 135 VUE
    DAY 134 RBAC
  • 原文地址:https://www.cnblogs.com/8013-cmf/p/12579374.html
Copyright © 2020-2023  润新知