【刷题日记】1051. 高度检查器

简介: 本次刷题日记的第 64 篇,力扣题为:1051. 高度检查器,简单

本次刷题日记的第 64 篇,力扣题为:1051. 高度检查器,简单

一、题目描述:

image.png

高度检查器,是如何来检查高度的呢?了解一下


二、这道题考察了什么思想?你的思路是什么?

仔细看看题目都给我们说了啥,来翟取一下关键信息:

虽然说光看题目的文字好像不是特别明白题目具体是要我们干些啥,不过还好题目给出了 3 个示例,能够让我知道题目是想要我们实现啥

  • 题目给出了一个数组,数组中的元素是整型数字,数字的排列是无序的
  • 题目要求我们按照非递减的方式来将数组进行排序,且和原来的数组进行比较,将对应位置,不同身高的情况累计下来,看看总共有多少个

分析

这里我们可以知道题目至少是需要我们对原有数组进行排序的,这里需要明确的一点是题目要求我们用非递增的方式来进行排序

一开始看题目,可能会认为是,将数组中不满足非递增的元素记录下来,作为返回的结果

5 1 2 3 4 6 7 8

这样来看,一开始是否还会认为,上述的数组是 元素 5 不满足非递增的要求,因此得到的结果是 1

其实并不是,题目给出了 咱们 3 个案例,实际上也是想让我们更加清晰的知道这个题需要我们干点啥

实际上我们需要这么做

1 2 3 4 5 6 7 8
5 1 2 3 4 6 7 8

实际上应该是比较上述数组对应位置元素不同的情况个数,因此一看,我们就知道不同的个数为 5 个

那么接下来咱们需要去做这个题就很明确了:

  • 第一将题目给出的数组进行排序,这里我们可以使用自己来实现排序算法,也可以使用 golang 中提供的库函数来进行处理,毕竟实际工作中,自己写的排序算法也很难排上用场,库函数肯定比绝大多数人实现的算法要更优
  • 第二我们需要用排序后的数组,与原有的数组进行挨个比较,记录元素不同的个数

虽然本题很简单,重要的是我们得有一个做题的明确思路和感觉

三、编码

根据上述逻辑和分析,我们就可以翻译成如下代码

编码如下:

func heightChecker(heights []int) int {
    // 开辟空间,不能直接修改原有空间,因为后续我们需要用来比较
    help  := append([]int{}, heights...)
    // 使用库函数进行排序
    sort.Ints(help)
    res := 0
    // 比较并记录结果
    for i, v := range heights {
        if v != help[i] {
            res++
        }
    }
    return res
}

四、总结:

image.png

这种实现方式空间复杂度非常明确,因为咱们开辟了一个 help 数组,假设算作占用 n 的空间,因此空间复杂度是 O(n)

时间复杂度,咱们使用库函数的话,库函数的具体实现方式时间复杂度是 O(nlogn)

原题地址:1051. 高度检查器

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~



相关文章
|
5月前
|
数据采集 前端开发 JavaScript
《花100块做个摸鱼小网站! 》第四篇—前端应用搭建和完成第一个热搜组件
本文档详细介绍了从零开始搭建一个包含前后端交互的热搜展示项目的全过程。通过本教程,读者不仅能学习到完整的项目开发流程,还能掌握爬虫技术和前后端交互的具体实践。适合有一定编程基础并对项目实战感兴趣的开发者参考。
101 1
|
5月前
|
数据采集 Java 数据库连接
《花100块做个摸鱼小网站! 》第二篇—后端应用搭建和完成第一个爬虫
本文详细介绍了一个基于Spring Boot的后端应用搭建过程,包括Maven项目结构的规划与配置、依赖管理、环境变量配置、数据库连接配置等。作者通过实际案例——一个摸鱼小网站的开发,逐步引导读者理解并实践项目的搭建流程。此外,还分享了如何利用Postman从cURL命令快速生成HTTP请求代码的方法,并演示了如何将这些代码整合进项目中,实现了一个简单的定时爬取抖音热搜数据的功能。文章不仅提供了详尽的代码示例,还附带了丰富的截图说明,非常适合希望从零开始构建Web应用的开发者参考学习。
74 3
《花100块做个摸鱼小网站! 》第二篇—后端应用搭建和完成第一个爬虫
|
7月前
|
前端开发 JavaScript
综合案例(前端代码练习):猜数字和表白墙
综合案例(前端代码练习):猜数字和表白墙
50 0
|
存储 编译器 C语言
还在为每次打开程序的输入烦恼吗,这篇文章让你不在迷茫
在之前我们编写的程序中,我们总要录入一些数据给予程序用于计算,但是当我们退出程序后录入的数据会销毁,因为此时数据都是存放在内存中。等到下次再运行程序时,数据又得从新录入,这样就非常的难受。
74 0
还在为每次打开程序的输入烦恼吗,这篇文章让你不在迷茫
|
8月前
|
消息中间件 前端开发 NoSQL
考研失败如何快速找到编程工作?
考研失败如何快速找到编程工作?
60 3
LeetCode每日一题(26)——高度检查器
高度检查器 1.题目 2.示例 3.思路 4.代码
119 0
|
前端开发 JavaScript
#yyds干货盘点# 前端歌谣的刷题之路-第五十一题-位置查找
#yyds干货盘点# 前端歌谣的刷题之路-第五十一题-位置查找
77 0
#yyds干货盘点# 前端歌谣的刷题之路-第五十一题-位置查找
|
前端开发
#yyds干货盘点# 前端歌谣的刷题之路-第七十一题-阻止默认事件
#yyds干货盘点# 前端歌谣的刷题之路-第七十一题-阻止默认事件
117 0
#yyds干货盘点# 前端歌谣的刷题之路-第七十一题-阻止默认事件
|
前端开发
#yyds干货盘点# 前端歌谣的刷题之路-第七十九题-判断版本
#yyds干货盘点# 前端歌谣的刷题之路-第七十九题-判断版本
114 0
#yyds干货盘点# 前端歌谣的刷题之路-第七十九题-判断版本
|
算法 Java
『牛客|每日一题』AB5 点击消除
基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦 https://www.nowcoder.com/link/pc_csdncpt_ll_sf
86 0
『牛客|每日一题』AB5 点击消除