Leetcode 1051. Height Checker, Java解法

高速PCB差分对布线仿真实战案例 差分对布线是高速PCB设计的关键环节,直接影响信号完整性与EMI性能。本文结合实际项目,详解等长控制、阻抗匹配、间距优化等核心技巧,并通过仿真工具验证眼图、串扰和时序裕量,助力工程师规避常见高速pcb设计陷阱。 阅读详情

Students are asked to stand in non-decreasing order of heights for an annual photo.

Return the minimum number of students not standing in the right positions.  (This is the number of students that must move in order for all students to be standing in non-decreasing order of height.)

Example 1:

Input: [1,1,4,2,1,3]
Output: 3
Explanation: 
Students with heights 4, 3 and the last 1 are not standing in the right positions.

Note:

  1. 1 <= heights.length <= 100
  2. 1 <= heights[i] <= 100

Approach #1 我的解法,Arrays.sort(), Arrays.copyOf()

class Solution {
    public int heightChecker(int[] heights) {
        
        int[] unsorted = Arrays.copyOf(heights,heights.length);
        int num = 0;
        Arrays.sort(heights);
        for(int i=0;i<heights.length;i++){
            if (unsorted[i]!=heights[i])
                num+=1;
        }
        return num;
    }
}

分析

时间复杂度,O(nlog(n))

空间复杂度,O(n)

Approach #2 Counting Sort

class Solution {
    public int heightChecker(int[] heights) {
        int[] heightToFreq = new int[101];
        
        for (int height : heights) {
            heightToFreq[height]++;   //calculate the frequency of each height.
        }
        
        int result = 0;
        int curHeight = 0;
        
        for (int i = 0; i < heights.length; i++) {
            while (heightToFreq[curHeight] == 0) {    //curHeight增加到剩余的最低身高
                curHeight++;
            }
            
            if (curHeight != heights[i]) {            //如果队伍是完全排序的,curHeight应该
                result++;                             //等于此时的身高
            }
            heightToFreq[curHeight]--;    
        }
        
        return result;
    }
}

分析:

计数排序

它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。 [1-2]  当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序)。

应用场景: 数据重复出现次数大 数据紧凑。

public class CountSort {
    public static void countSort(int[] arr) {
        if (arr == null || arr.length == 0)
            return;

        int max = max(arr); //寻找数组中最大值

        int[] count = new int[max + 1]; //建立临时数组, 长度为max+1
        Arrays.fill(count, 0);  //使用0填充数组中的元素

        //使用待排序数组的元素作为临时数组的下标,并且统计每个元素的个数
        for (int i = 0; i < arr.length; i++) {
            count[arr[i]] = count[arr[i]] + 1; 
        }

        
        int arrIndex = 0;
        for (int i = 0; i <= max; i++) {    //从0到max挨个遍历
            //遍历临时数组某下标对应的数组元素值,数组元素值代表下标值出现了几次,依次添加到目标数组
            for (int j = 0; j < count[i]; j++) {    
                arr[arrIndex++] = i; 
            }
        }
    }
    
    // 寻找数组中最大值的方法
    public static int max(int[] arr) {
        int max = Integer.MIN_VALUE;
        for (int ele : arr) {
            if (ele > max)
                max = ele;
        }

        return max;
    }
}

 

【C#程序员入门AI】AI应用的操作系统:Semantic Kernel 2026实战 用户ID用户信息 阅读详情

相关推荐

浅谈IC测试向量(pattern)及其转换

随着集成电路的飞速发展,其规模越来越大,对电路的质量与可靠性要求进一步提高,集成电路的测试方法也变得越来越困难,为了实现芯片的快速测试和筛选,ATE设备为其提供了强有力的支撑。ATE运用芯片设计仿真文件,将其作为芯片输入激励,通过ATE测试平台提供芯片测试环境,将芯片的输出和测试结果进行比较,以此来判定芯片的好坏。 说起IC测试,不得不说一下Pattern这个词,它中文的意思是模式。在图像处理中,这个词意思为图像的纹理特征,而在IC也即芯片测试行业,这个词实际上代表了需要测试芯片的时序特征。简单的说,在测

flomingo1的专栏 1万+

Note (Code 1051): Unknown table 执行后提示 warning

奇怪的问题: 如果脚本里有这样的语句,则会报错,但是注释了所有的DROP后,就不会报错了。 DROP DATABASE IF EXISTS `zstest_us_partner`; DROP TABLE IF EXISTS `APPLICATION`; Note (Code 1008): Can't drop database 'us_partner'; dat...

weixin_34104341的博客 2321

三维旋转详细解读(Rodrigues‘ Roatation Formula 罗德里格旋转公式)

三维旋转引言三维旋转1)欧拉角2)轴角式旋转分解1)V||的旋转2)V⊥的旋转3)V的整体旋转 引言 前面我们了解了 复数在二维旋转中的作用与联系 而四元数与三维旋转之间的关系与复数对二维旋转有很多类似的地方,下面我们就先来详细了解一下三维旋转的过程。 三维旋转 首先讨论一下三维旋转,我们了解到常用的三维旋转有两种方式: 1)欧拉角 即按照一定的顺序,分别对X, Y, Z三个轴进行旋转 θ 角。绕各旋转轴的旋转矩阵为: 然后任意的三维旋转可以分解成上述三种旋转方式的组合。(注意:三个旋转的顺序是非常重要的

晓晨的博客 1万+

jQuery中实现不定高度height属性过渡为auto的animate动画

 jQuery中想要用animate方法将元素的height属性从其它值过渡到auto值,首先想到的就是JavaScript代码复制$(this).animate({height:'auto'}, 300);但是并不起作用。这时需要换一种方法,思路是:1、首先定义变量将当前的高度值保存下来。JavaScript代码复制var curHeight = $(this).height();2、将元素高度...

weixin_42087730的博客 2014

5-->详解《switch 数据接收驱动框架、mtk7621集成交换芯片mt7530》之一

SWITCH 交换芯片驱动配置: 一、 配置 MDIO 总线 二、配置 MAC 接口 三、基于 MAC 的 DMA 配置 四、设备驱动结构体 五、数据收发包

weixin_38387929的博客 1万+

从Verilog到GDS:手把手教你搞定Calibre LVS物理验证(附常见报错解决)

本文详细介绍了从Verilog到GDS的Calibre LVS物理验证全流程,包括工具链配置、RTL到SPICE网表转换、LVS运行配置及高级技巧。重点解析了常见报错如网络不匹配、器件不匹配和电源引脚缺失的解决方案,帮助工程师高效完成芯片物理验证,确保设计正确性。

culing2941的博客 507

Java_高度检查器(HeightChecker)

题目 思路 //本质是与升序排序对比有多少元素不在应在的位置上 //sort排序数组得到新数组 //同时遍历新旧数组,相同index,不同value,count++; class Solution { public int heightChecker(int[] heights) { int count=0; int[] copyHeights=new...

Chill Lyn 249

YOLOv8交通管理 详细解释及代码完整示例

YOLOv8在交通管理中的应用及代码实现 摘要:本文详细介绍了YOLOv8在交通管理领域的应用场景,包括车辆检测、违规行为识别和行人安全预警等。文章提供了完整的Python代码示例,展示了如何使用YOLOv8进行交通对象检测和车辆计数统计。代码包含模型加载、对象检测、结果可视化等功能模块,并给出了性能优化和功能扩展建议。该实现基于Ultralytics框架,支持多种YOLOv8模型选择,可根据实际需求调整模型大小和检测参数。

u010117029的博客 153

求二叉树的深度和广度

#include "OJ.h" #include #include #include using namespace std; /* Description 给定一个二叉树,获取该二叉树的宽度深度。 Prototype int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned i

★匆匆★的专栏 1201

笔试题-2023-乐鑫-数字IC设计【纯净题目版】

笔试题-2023-乐鑫-数字IC设计【纯净题目版】

w0shishabi的博客 1777

迫零均衡前与迫零均衡后眼图对比附Matlab代码

迫零均衡(Decision Feedback Equalization,DFE)是一种常用的数字通信技术,用于抑制信号传输中的多径干扰。迫零均衡(Decision Feedback Equalization,DFE)是一种常用的数字通信技术,用于抑制信号传输中的多径干扰。眼图是一种常用的信号质量评估工具,通过绘制接收到的信号在时域上的波形,可以直观地观察到噪声、失真和干扰等问题。眼图是一种常用的信号质量评估工具,通过绘制接收到的信号在时域上的波形,可以直观地观察到噪声、失真和干扰等问题。

ByteSparkX的博客 459

ViewGroup中的onLayout方法的理解

今天在自定义一个ViewGroup的时候出现了一个这样问题,事后分析是因为自己对ViewGroup中的onLayout方法和其中子View的layout方法的理解不足导致的。 我要实现的效果是做一个类似LinearLayout垂直排列子View的ViewGroup,在ViewGroup中onMeasure方法中测量完ViewGroup的大小以后进开始摆放子View了,onLayout的开始的代码如...

static_zh的博客 2134

C# MES通信从入门到精通(1)——串口传输文件

本文详细介绍了在Mes通信领域如何使用串口发送文件,由实战经验总结,堪称MES通信领域的葵花宝典!

qq_34059233的博客 3750

LeetCode 1051. 高度检查器(Height Checker) 28

1051. 高度检查器 1051. Height Checker 题目描述 学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。 请你返回至少有多少个学生没有站在正确位置数量。该人数指的是:能让所有学生以 非递减 高度排列的必要移动人数。 每日一算法2019/5/31Day 28LeetCode1051. Height Checker 示例: 输入:[1,1,4,2,1,3] 输出:3...

weixin_30247307的博客 253

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode_1051_高度检查器

题目链接 https://leetcode-cn.com/problems/height-checker/ 解题思路 首先将原数组复制一份为tmp 然后对数组tmp进行排序 比较原数组和排序后的tmp每个位置的不同个数即为答案 AC代码 class Solution { public int heightChecker(int[] heights) { int ans = 0; int len = heights.length; int[] t

Fitz的博客 204

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

1051. Height Checker。

Students are asked to stand in non-decreasing order of heights for an annual photo. Return the minimum number of students not standing in the right positions. (This is the number of students that mus...

繁城落叶 628

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

#力扣 LeetCode1051. 高度检查器 @FDDLC

题目描述: https://leetcode-cn.com/problems/height-checker/ Java代码: class Solution { public int heightChecker(int[] h) { int[] cp=h.clone(); Arrays.sort(h); int ans=0; for(int i=h.length-1;i>=0;i--)if(cp[i]!=h[i]).

LiuXingchang的博客 299

leetcode-1051. 高度检查器-C语言

int cmp(int *a, int *b){ return *a - *b; } int heightChecker(int* arr, int len){ int i; int cnt = 0; int arr2[len]; memcpy(arr2, arr, len*sizeof(int)); qsort(arr2, l...

SFFS 319

获取树的高度和深度

import org.assertj.core.util.Lists; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { Objects objects = new Objects...

weixin_30535043的博客 1039

获取指定元素的最大子元素(包括自身)的width值和height值

/* * 返回该htmlEl的最大子元素(包括自身)的width值 */ getMaxWidth : function(htmlEl, includeSelf) { var self = this; if(htmlEl) { var children = $(htmlEl).children(), maxWidth = includeSelf ? $(...

web开发 226

Vue获取屏幕高度

1.data中定义 curHeight:0,//当前所需屏幕高度 /**获取屏幕高度 */     beforeMount() {         var h = document.documentElement.clientHeight || document.body.clientHeight;         var curHeight = h

那拉的博客 4万+

vue填坑之回到顶部:

vue来实现回到顶部代码(参考慕课网):   let stop = false; // 全局变量,坑处   let timer = null; // 全局变量,坑处 mounted() { this.$nextTick(function () {

wmwmdtt的博客 1万+

vue.js获取屏幕高度clientHeight设置充满屏幕引导页

实现效果:方法:html:JS:&lt;script&gt; export default { data(){ return { clientHeight:'', } }, mounted(){ // 获取浏览器可视区域高度 this.clientHeight = `${document.documen...

jerrica的博客 5万+

mysql删除表时报错ERROR 1051 (42S02): Unknown table '...'

我报这个错误的原因是因为,之前存储引擎用的是MyISAM,后来改成InnoDB 但是删除不了表是因为之前表用的存储引擎模式还是MyISAM,删除不了。 第1种, 修改表的存储引擎: 第2种, 1.删除相应表的文件,在删除之前要确保表没有用,才能删除。 2.找到相应的库在系统中的位置,如:/var/lib/mysql/库名...

记录日常 2万+

【Leetcode】1051. Height Checker(138周赛第一题)(模拟题)

Students are asked to stand in non-decreasing order of heights for an annual photo. Return the minimum number of students not standing in the right positions. (This is the number of students that mu...

小I的博客 359

Java、Python/1051. Height Checker 高度检查器

题目 代码部分(Python 68ms 58.52%) class Solution: def heightChecker(self, heights: List[int]) -> int: tmp = sorted(heights) return sum(tmp[i] != heights[i] for i in ra...

qq_38959715的博客 1750
上一篇: Leetcode 561. Array Partition I, Java解法
下一篇: Leetcode 922. Sort Array By Parity II , Java解法
YuanTheCoder
博客等级 码龄9年 2粉丝 34原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值