/**
* 1365. 有多少小于当前数字的数字
* @author wsq
* @date 2020/10/26
给你一个数组 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)。
链接:https://leetcode-cn.com/problems/how-many-numbers-are-smaller-than-the-current-number
*/
package com.wsq.leetcode;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class SmallerNumbersThanCurrent {
/**
* 利用hash表和快速排序配合使用
* @param nums
* @return
*/
public int[] smallerNumbersThanCurrent(int[] nums) {
Map<Integer, Integer> countMap = new HashMap();
int n = nums.length;
int[] tmpArr = new int[n];
System.arraycopy(nums, 0, tmpArr, 0, n);
Arrays.sort(tmpArr);
for(int i = 0; i < n; i++){
if(i == 0){
countMap.put(tmpArr[i], 0);
continue;
}
int j = i;
while(j-1 >= 0 && tmpArr[j-1] == tmpArr[i]){
j--;
}
if(countMap.get(tmpArr[i]) == null){
countMap.put(tmpArr[i], j);
}
}
int[] ans = new int[n];
for(int i = 0; i < n; i++){
ans[i] = countMap.get(nums[i]);
}
return ans;
}
/**
* 由于题目中学到数字的范围是0,100,因此统计原数组中每个数字对应的个数,
* 然后将前者的个数加给后面的数,就是在原数组中小于该元素的个数
* @param nums
* @return
*/
public int[] smallerNumbersThanCurrent1(int[] nums) {
int[] cnt = new int[101];
int n = nums.length;
for (int i = 0; i < n; i++) {
cnt[nums[i]]++;
}
for (int i = 1; i <= 100; i++) {
cnt[i] += cnt[i - 1];
}
int[] ret = new int[n];
for (int i = 0; i < n; i++) {
ret[i] = nums[i] == 0 ? 0 : cnt[nums[i] - 1];
}
return ret;
}
}
相关推荐
一份针对零基础学习AI Agent详细学习计划
以下是针对零基础学习者制定的AI Agent详细学习计划,结合最新行业动态和实用资源推荐,帮助你从入门到进阶系统掌握核心技能
leetCode-1365有多少小于当前数字的数字
有多少小于当前数字的数字 给你一个数组 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 不存在比它小的数字。.
开源代码分享(29)-基于拉丁超立方抽样的风光场景生成和削减
作为分层抽样方法的一 种,拉丁超立方抽样具有良好的抽样精度和效率[14]。本文使用多场景方法来描述可再生能源(风电、光伏)的不确定性。以风电功率为例,首先假定风电功率服从正态分布 N(μ, δ 2 ),μ 为预测值的期望值,δ 为其波动的百分比。接着,采用拉丁超立方抽样[21]生成大量服从概率分布约束的风电出力场景,并采用考虑 Kantorovich 距离[22]的场景削减技术处理该场景,进行场景削减。最后,导出具有相应概率的削减之后的场景。
[LeetCode]给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。
给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。 以数组形式返回答案。 这个很简单: class Solution: def smallerNumbersThanCurrent(self, nums: List[int]) -> List[int]: num_small = [0 f
三维Copula建模进阶:从对称、嵌套到Pair-Copula(C-Vine/D-Vine)到底怎么选?
本文深入探讨三维Copula建模的进阶策略,包括对称Archimedean、嵌套结构和Vine Copula(C-Vine/D-Vine)的选择方法。通过对比数学特性、计算复杂度和实际应用案例,提供了一套针对金融风险分析等场景的决策框架,帮助分析师根据数据特征选择最优模型。
python爬取《你好, 李焕英》豆瓣评论数据
# 导入工具包 import requests from bs4 import BeautifulSoup import time import pandas as pd import numpy as np # 请求头 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'} # =
剑指offer刷题记—第4题_二维数组中的查找
** * @program: suanfa * @description: 二维数组中查找,给定一个二维数组,其每一行从左到右递增排序, * 从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中 * @author: zi jian * @create: 2019-10-23 16:37 */ public class FindNumber_4 { //思路是确定一...
ANSYS FLUENT 超临界流体物性分段线性插值数据批量导入
使用fluent自带数据库进行超临界流体仿真时,时不时会出现计算错误,考虑是数据库不稳定引起,而使用自定义的分段线性插值物性则不会出现上述情况。 超临界流体在拟临界点附近物性变化剧烈,需要使用较多的数据点才能更准确的表述物性,如果是在对话框中修改,一次只能输入一个点,人工输入极其费时费力且容易失误。 数据批量导入方法为: 1.以CO2为例,使用REFREPRO等物性查询软件或数据资料,获得所需物性数据表。 2.在FLUENT材料Materia...
Leetcode 1365. 有多少小于当前数字的数字
1365. 有多少小于当前数字的数字 一开始想得可复杂了,复制一下整个数组,给复制的数组排序,然后再把结果存到一个哈希表里,再把哈希表的数据映射到答案数组...看了题解学了一下标准的计数法 解题思路 考虑到对于所有的数字,都小于100,故定义一个cnt数组存储这些数组出现的次数,其大小为101; 从cnt[1]开始,对cnt数组进行累加操作,得到对于每个数字 i (对应nums内的元素),其前面数字出现的次数; 将结果写入答案数组ans[ ],由于此时cnt[ ]数组内每个元素存储的是从0到 i
【智能车Code review】—曲率计算、最小二乘法拟合
【1】曲率计算函数 选三个点计算曲率 float process_curvity(byte x1, byte y1, byte x2, byte y2, byte x3, byte y3) { float K; int S_of_ABC = ((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) / 2; //面积的符号表示方向 byte q1 = (byte)((x2 - x1) * (x2 - x1) + (y2 - y1) *
C#上位机+TensorFlow Lite 轻量化AI模型部署实战(工业级完整版,低算力工控机首选)
工业自动化轻量化AI部署指南:C# + TensorFlow Lite实战 摘要:本文针对工业自动化领域机器视觉部署的痛点,提出基于C#和TensorFlow Lite(TFLite)的轻量化解决方案。该方案完美适配低算力工控环境(J1900/2G内存),具有以下核心优势:1)极致轻量化,模型体积仅KB-MB级;2)CPU深度优化,单帧推理≤15ms;3)零环境依赖,纯C#部署;4)工业级稳定性,7×24小时运行。教程涵盖从环境搭建、模型转换到C#封装的完整流程,特别提供YOLOv8等工业常用模型的TFLi
leetcode 1365.有多少小于当前数字的数字(python)
leetcode 1365.有多少小于当前数字的数字(python) 给你一个数组 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)。 对
Python李峋同款跳动的爱心(完整代码)
Python语言实现李峋同款可写字版跳动的爱心的完整代码。
leetcode1365. 有多少小于当前数字的数字
文章目录题目:1365. 有多少小于当前数字的数字基本思想1:暴力基本思想2:排序基本思想3:计数排序 题目:1365. 有多少小于当前数字的数字 给你一个数组 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] 解释:
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
LeetCode刷题之1365. 有多少小于当前数字的数字
LeetCode刷题之1365. 有多少小于当前数字的数字 我不知道将去向何方,但我已在路上! 时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! 题目: 给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。 以数组形式返回答案。 示例: 示例 1 : 输入:nu
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
力扣第1365题:有多少小于当前数字的数字
力扣1365. 有多少小于当前数字的数字
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
leetcode.1365 有多少小于当前数字的数字
leetcode.1365 有多少小于当前数字的数字 题干 给你一个数组 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] 示例 2: 输入:
Lecode1365. 有多少小于当前数字的数字-20201026
LeeCode1365. 有多少小于当前数字的数字题目描述解题思路方法1代码复杂度方法2代码复杂度方法3代码复杂度 题目描述 给你一个数组 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] 解释: 对于 n
LeetCode 每日一题 1365.有多少小于当前数字的数字
10.26 LeetCode 每日一题 1365.有多少小于当前数字的数字 题目分析: 题目其实很简单,无非就是要找出与每一个数小的数的总个数,然后输出。返回的是一个数组,数组中对应下标计算的个数必须与题目的nums数组的下标保持一致! 方法一:暴力法 对于每一个数组中的元素,都遍历一次,依次和其他元素进行比较,然后结果存进一个数组中,最后将数组返回即可。 public int[] smallerNumbersThanCurrent(int[] nums) { if(nums.length
【LeetCode每日一题】[简单]1365. 有多少小于当前数字的数字
【LeetCode每日一题】[简单]1365. 有多少小于当前数字的数字 1365. 有多少小于当前数字的数字 题目来源 算法思想:数组 题目: java代码–暴力 思路: 统计每个数字比它小的个数 class Solution { public int[] smallerNumbersThanCurrent(int[] nums) { int count = 0;//用来计数 int[] res = new int[nums.length];//存放答案 for (int i = 0
leetcode 1365. 有多少小于当前数字的数字(简单)
leetcode 1365. 有多少小于当前数字的数字(简单) 给你一个数组 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)。 对于 nu
菜鸟刷题LeetCode.1365. 有多少小于当前数字的数字
** LeetCode.1365. 有多少小于当前数字的数字 ** 给你一个数组 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)。
从零开始刷LeetCode___1365. 有多少小于当前数字的数字
LeetCode1365. 有多少小于当前数字的数字题目解题思路:利用数组进行两次遍历(Arrays方式)利用进行两次遍历(HashMap方式) 题目 **给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i且 nums[j] < nums[i] 。 以数组形式返回答案.** 输入:nums = [8,1,2,2,3] 输出:[4,0,1,1,3] 解释: 对
1906



被折叠的 条评论
为什么被折叠?



