zoukankan      html  css  js  c++  java
  • 1365. 有多少小于当前数字的数字

    题目:给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。

    以数组形式返回答案。

    示例 :

    输入: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)。

    1.原创

    class Solution {
    public:
        vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
            vector<int> old_nums(nums); //vector赋值
            sort(nums.begin(), nums.end()); //排序
            vector<int> res;
            for (auto i:old_nums){
                vector<int>::iterator it = find(nums.begin(),nums.end(),i);
                int index=&*it-&nums[0];
                res.push_back(index);
            }
            return res;
        }
    };

    2.题解

    class Solution {
    public:
        vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
            vector<int> ans;//记录每次遍历后的比当前数大的结果
            for(int i=0;i<nums.size();i++){
                int temp=0;//保存比当前数小的数的个数
                int left=i-1;//当前数的左边的数
                int right=i+1;//当前数的右边的数
                //向左查找
                while(left>=0){
                    //如果左边的数比当前数小,temp++
                    if(nums[i]>nums[left]) temp++;
                    //继续向左移动
                    left--;
                }
                //向右查找
                while(right<nums.size()){
                    //如果右边的数比当前数小,temp++
                    if(nums[i]>nums[right]) temp++;
                    //继续向右移动
                    right++;
                }
                //把比当前数小的个数存入数组
                ans.push_back(temp);
            }
            //返回最后的结果
            return ans;        
    
        }
    };
    
    作者:solitary-scorpio
    链接:https://leetcode-cn.com/problems/how-many-numbers-are-smaller-than-the-current-number/solution/you-duo-shao-xiao-yu-dang-qian-shu-zi-de-shu-zi-10/
  • 相关阅读:
    个人学习代码保存:例8.在存储过程中使用简单的事务处理
    个人学习代码保存:例6.多文件上传
    泛型 .net学习日记
    .net 点击刷新验证码问题
    个人学习代码保存:例11.读取Excel文件中的数据
    个人学习代码保存:例12.读取GridView文件中的数据到Excel文件
    个人学习代码保存:例5.利用标准FileUpload单文件上传
    Android视频采集
    Android视频采集+H264编码
    实时传输协议(RTP)和实时控制协议(RTCP)
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/14451045.html
Copyright © 2011-2022 走看看