leetcode 1365. 有多少小于当前数字的数字

这篇具有很好参考价值的文章主要介绍了leetcode 1365. 有多少小于当前数字的数字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2023.9.2

leetcode 1365. 有多少小于当前数字的数字,leetcode专栏,leetcode,算法,职场和发展,c++,数据结构

        本题直观的解法就是双层for循环暴力求解:

暴力解:

class Solution {
public:
    vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
        vector<int> ans;
        for(int i=0; i<nums.size(); i++)
        {
            int temp = 0;//比当前元素小的元素个数
            for(int j=0; j<nums.size(); j++)
            {
                if(nums[j] < nums[i]) temp++;
            }
            ans.push_back(temp);
        }
        return ans;
    }
};

         上述解法中,元素之间进行了重复比较,可以进行优化:

暴力解(优化版):

class Solution {
public:
    vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
        vector<int> ans(nums.size());
        for(int i=0; i<nums.size(); i++)
        {
            for(int j=i+1; j<nums.size(); j++)
            {
                if(nums[j] < nums[i]) ans[i]++;
                else if(nums[j] > nums[i]) ans[j]++;
            }
        }
        return ans;
    }
};

        由于题中nums[i]给的范围是0~100,因此还可以以空间换时间,进一步优化:文章来源地址https://www.toymoban.com/news/detail-691822.html

哈希法:

class Solution {
public:
    vector<int> smallerNumbersThanCurrent(vector<int>& nums) {
        vector<int> v(nums.begin(),nums.end());
        sort(v.begin(),v.end()); //排序之后,元素下标就是小于当前元素的个数
        int hash[101];

        for(int i=0; i<v.size(); i++)
        {
            if(i>0 && v[i]==v[i-1]) continue;
            hash[v[i]] = i;
        }

        for(int i=0; i<nums.size(); i++)
        {
            nums[i] = hash[nums[i]];
        }
        return nums;
    }
};

到了这里,关于leetcode 1365. 有多少小于当前数字的数字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Leetcode 第 380 场周赛 Problem C 价值和小于等于 K 的最大数字(Java + 二分答案 + 规律)

    Problem: 100160. 价值和小于等于 K 的最大数字 给你一个整数 k 和一个整数 x 。 令 s 为整数 num 的下标从 1 开始的二进制表示。我们说一个整数 num 的 价值 是满足 i % x == 0 且 s[i] 是 设置位 的 i 的数目。 请你返回 最大 整数 num ,满足从 1 到 num 的所有整数的 价值 和小于等于 k 。

    2024年01月19日
    浏览(39)
  • 【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人

    《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌ 更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍 感谢小伙伴 们点赞、关注! class   Solution :      def   findContentChildren ( self ,  g :  List [ int ],  s

    2024年02月04日
    浏览(52)
  • 字节面试题-小于N的最大数字

    该题目在网上目前的答案很多,但是要么很长难以理解,要么答案根本就不对。最近看到了这位博主的博文:字节面试题:给定数字n,数组arr={1,3,5,2},求arr中的数字能组成小于n的最大整数_斯文流氓骚刚的博客-CSDN博客 深受启发,但原文仍有瑕疵,最终的答案可以等于N,而

    2024年02月14日
    浏览(35)
  • 【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值

    《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌ 更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍 感谢小伙伴 们点赞、关注! class   Solution :      def   mySqrt ( self ,  x :   int )   -   int :       

    2024年02月04日
    浏览(63)
  • element-ui的年份范围选择器,选择的年份需等于或小于当前年份,选择的年份范围必须在三年之内

    日期限制处理(禁用),下面我以我这边的需求为例, 选择的年份需等于或小于当前年份 选择的年份范围必须在三年之内 1.限制起始日期小于截止日期 1)根据用户选中的开始日期,置灰不可选的日期范围; 2)如果用户先选择截止日期,再选择的开始日期,且开始日期大于

    2024年04月14日
    浏览(36)
  • leetcode2809.使数组和小于等于x的最小时间

    题目链接 2809. 使数组和小于等于 x 的最少时间 - 力扣(LeetCode) 解析思路 看不懂

    2024年01月21日
    浏览(36)
  • 【Leetcode刷题】算法:罗马数字转整数

    定义一个 Solution 类,该类包含一个 romanToInt 方法用于将罗马数字转换为整数。 初始化变量 answer 为 0,用于保存转换后的整数值。 获取输入字符串 s 的长度,并保存在变量 length 中。 创建一个字典 d,将每个罗马数字字符与对应的数值进行映射。 使用 for 循环遍历 s 中的每个

    2024年02月05日
    浏览(88)
  • Leetcode算法系列| 12. 整数转罗马数字

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如

    2024年02月02日
    浏览(42)
  • 算法leetcode|65. 有效数字(rust重拳出击)

    有效数字 (按顺序)可以分成以下几个部分: 一个 小数 或者 整数 (可选)一个 \\\'e\\\' 或 \\\'E\\\' ,后面跟着一个 整数 小数 (按顺序)可以分成以下几个部分: (可选)一个符号字符( \\\'+\\\' 或 \\\'-\\\' ) 下述格式之一: 至少一位数字,后面跟着一个点 \\\'.\\\' 至少一位数字,后面跟着一个

    2024年02月15日
    浏览(41)
  • 【LeetCode每日一题】2809. 使数组和小于等于 x 的最少时间

    2024-1-19 2809. 使数组和小于等于 x 的最少时间 思路: 获取两个列表的长度n,并初始化一个二维数组f,用于存储最优解。 定义一个二维数组nums,用于存储输入的两个列表中的元素,并按照第二列元素进行排序。 使用动态规划的方法,通过遍历nums数组,计算最优解。其中,

    2024年01月21日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包