【面试必刷TOP101】寻找峰值 数组中的逆序对

news2024/11/24 7:43:43

目录

题目:寻找峰值_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

解题思路:

代码:

过啦!!!

题目:数组中的逆序对_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


题目:寻找峰值_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @return int整型
*/
func findPeakElement( nums []int ) int {
    // write code here
}

解题思路:

首先补充一句:这道题的自测有问题不要信,逻辑正确就直接提交就好。

这道题也是一道很经典的二分题目,二分并不是一定要有序的数组才能使用二分,二分的精髓在于数据的单调性,二分就是通过数据的单调性,以及寻找一个参照物来快速排除一部分的数据,

就拿这道题来说,题目要求是无论返回哪个山峰都行,那我们只有两种情况需要考虑,一个是在山峰的左边(递增区间)一个是在山峰的右边(递减区间),如果是在递增区间,我们就可以把左边的数据排除,如果是在递减区间,我们就能将右边连同自己这段数据排除,这样就使用到了二分的思想,代码如下

代码:

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @return int整型
*/
func findPeakElement( nums []int ) int {
    left, right := 0, len(nums)-1
    for left < right {
        mid := left + (right - left + 1) / 2
        if nums[mid] > nums[mid-1] {
            left = mid
        } else {
            right = mid-1
        }
    }
    return left
}

过啦!!!

题目:数组中的逆序对_牛客题霸_牛客网 (nowcoder.com)

题目的接口:

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @return int整型
*/
func InversePairs( nums []int ) int {
    // write code here
}

解题思路:

这道题目的如果使用暴力求解那肯定就是 O(N) 基本的时间复杂度,想要做到 N*logN 就得想其他的解决方案,这道题也算是一道非常经典的题目,考察的是归并排序的写法

我们通过使用归并排序的思想就可以在使用归并排序的过程中完成题目的要求,代码如下

代码:

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param nums int整型一维数组
 * @return int整型
 */
func InversePairs(nums []int) int {
	if len(nums) < 2 {
		return 0
	}

	count := 0
    var mergeSort func(left, right int)
    var merge func(left, right, mid int)

	mergeSort = func(left, right int) {
		if left >= right {
			return
		}

		mid := left + (right-left)/2
		mergeSort(left, mid)
		mergeSort(mid+1, right)
		merge(left, right, mid)
	}

	merge = func(left, right, mid int) {
		l, r := left, mid+1
		res := make([]int, right-left+1)
		index := 0
		for l <= mid && r <= right {
			if nums[l] <= nums[r] {
				res[index] = nums[l]
				l++
				index++
			} else {
				res[index] = nums[r]
				r++
				index++

				count += mid + 1 - l
				count %= 1000000007
			}
		}

		for l <= mid {
			res[index] = nums[l]
			index++
			l++
		}
		for r <= right {
			res[index] = nums[r]
			index++
			r++
		} 
		l = left
		for _, v := range res {
			nums[l] = v
			l++
		}
	}

	mergeSort(0, len(nums)-1)
	return count
}

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1045031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python二级 每周练习题20

练习一: 日期计算器 设计一款日期计算程序&#xff0c;能否实现下面的功能&#xff1a; (1)要求用户分别输入年、月、日&#xff08;分三次输入&#xff09;&#xff1b; (2)程序自动会根据输入的年月日计算出这一天是这一年的第几天&#xff1b; (3)输出格式为&#xff1a;这…

低功耗引擎Cliptrix为什么可以成为IOT的高效能工具

在万物互联的时代&#xff0c;现代人已普遍接受电视、音箱等电器设备具备智能化能力&#xff0c;也是在这个趋势下&#xff0c;我们身边越来越多的iOT设备联网和交互成为刚需。 但iot设备也面临到一些非常显著的痛点&#xff0c;例如iot设备的内存、处理器等核心元件无法与手机…

Selenium Web自动化测试 —— 高级控件交互方法!

一、使用场景 使用场景对应事件复制粘贴键盘事件拖动元素到某个位置鼠标事件鼠标悬停鼠标事件滚动到某个元素滚动事件使用触控笔点击触控笔事件&#xff08;了解即可&#xff09; https://www.selenium.dev/documentation/webdriver/actions_api 二、ActionChains解析 实例…

内网即时通讯软件:提升政企办公效率与数据安全的利器

在当今信息快速传播的社会中&#xff0c;即时通讯软件已经成为了人们生活中不可或缺的一部分。然而&#xff0c;对于政府机构和企业来说&#xff0c;传统的大众即时通讯软件已经不再满足他们日常工作的需求。市面上大多数个人即时通讯软件都是为大众用户设计的&#xff0c;它们…

【文末送书】用Chat GPT轻松玩转机器学习与深度学习

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

PY32F003F18之RTC

一、RTC振荡器 PY32F003F18实时时钟的振荡器是内部RC振荡器&#xff0c;频率为32.768KHz。它也可以使用HSE时钟&#xff0c;不建议使用。HAL库提到LSE振荡器&#xff0c;但PY32F003F18实际上没有这个振荡器。 缺点&#xff1a;CPU掉电后&#xff0c;需要重新配置RTC&#xff…

Docker版部署RocketMQ开启ACL验证

一、拉取镜像 docker pull apache/rocketmq:latest 二、准备挂载目录 mkdir /usr/local/rocketmq/data mkdir /usr/local/rocketmq/conf 三、运行 docker run \ -d \ -p 9876:9876 \ -v /usr/local/rocketmq/data/logs:/home/rocketmq/logs \ -v /usr/local/rocketmq/data…

数字化工厂系统能给企业品牌带来什么价值

数字化工厂管理系统是指通过数字技术和自动化系统来实现生产过程的数字化和智能化的工厂。它对品牌的价值主要体现在提高效率、降低成本、提升品质和增强灵活性四个方面。 首先&#xff0c;数字化工厂能够显著提高生产效率。传统工厂生产过程中存在很多手工操作和人为干预&…

pyspark.sql.dataframe.DataFrame 怎么转pandas DataFrame

pyspark.sql.dataframe.DataFrame 怎么转pandas DataFrame 要将 PySpark 的 pyspark.sql.dataframe.DataFrame 转换为 Pandas DataFrame&#xff0c;可以使用 toPandas() 方法。以下是一个示例&#xff1a; from pyspark.sql import SparkSession# 创建 SparkSession 对象 sp…

SAP移动端解决方案参考

企业在实现SAP移动化时遇到的一些挑战&#xff0c;如果我们利用自己开发团队来进行应用程序的开发&#xff0c;可能会陷入规划&#xff0c;开发&#xff0c;调试&#xff0c;测试的循环中&#xff0c;最后仍一无所获。那如果企业寻找第三方咨询公司进行开发的话&#xff0c;又担…

分享5款无广告免费的高效软件

​ 有句老话这样讲&#xff0c;工欲善其事&#xff0c;必先利其器&#xff0c;好的工具可以让你工作起来事半功倍。今日为大家推荐5款神器软件&#xff0c;提升你的工作效率。 1.数据恢复——EasyRecovery ​ EasyRecovery是一款数据恢复工具,它可以恢复从硬盘或移动存储设备…

多个短视频如何合并为一个长视频?原来靠它

随着电子设备的流行&#xff0c;越来越多的用户喜欢制作视频来记录生活&#xff0c;以便将美好回忆永久保存方便日后观看。通常&#xff0c;人们更倾向于将多个短视频合并为一个长视频&#xff0c;因为这样更容易存储。那么&#xff0c;怎样才能将多个短视频合并为一个长视频呢…

c++ 使用rapidjson对数据序列化和反序列化(vs2109)

RapidJSON是腾讯开源的一个高效的C JSON解析器及生成器&#xff0c;它是只有头文件的C库&#xff0c;综合性能是最好的。 1. 安装 在NuGet中为项目安装tencent.rapidjson 2. 引用头文件 #include <rapidjson/document.h> #include <rapidjson/memorystream.h> #…

成都瀚网科技有限公司:抖店精选联盟怎么用?

抖音精选联盟是抖音电商平台提供的一项服务&#xff0c;旨在为商家提供更多的推广机会和销售渠道。然而&#xff0c;很多人对于如何使用抖店精选联盟以及如何开通这项服务不太了解。本文将为您详细介绍抖店精选联盟的使用和激活流程。 第一节&#xff1a;如何使用抖店精选联盟 …

可以动态改变刻度背景色的车速仪表盘

最近做的项目的主页面需要用到一个仪表盘来动态显示车速&#xff0c;同时改变对应的背景色 仪表盘 开始是想着使用echarts&#xff0c;修修改改拿来用&#xff0c;但是人家客户有规定&#xff0c;必须搞个差不多的&#xff0c;那没办法&#xff0c;自 己动手搞个吧 截图如下&am…

【目标检测】——Gold-YOLO为啥能超过YOLOV8

华为 https://arxiv.org/pdf/2309.11331.pdf 文章的出发点&#xff1a;FPN中的信息传输问题 1. 简介 基于全局信息融合的概念&#xff0c;提出了一种新的收集和分发机制&#xff08;GD&#xff09;&#xff0c;用于在YOLO中进行有效的信息交换。通过全局融合多层特征并将全局信…

AIGC玩转卡通化技术实践

FaceChain写真开源项目插播&#xff1a; 最新 FaceChain支持多人合照写真、上百种单人写真风格&#xff0c;项目信息汇总&#xff1a;ModelScope 魔搭社区 。 github开源直达&#xff08;觉得有趣的点个star哈。&#xff09;&#xff1a;https://github.com/modelscope/…

护眼灯显色指数应达多少?眼科医生推荐灯光显色指数多少合适

台灯的显色指数是其非常重要的指标&#xff0c;它可以表示灯光照射到物体身上&#xff0c;物体颜色的真实程度&#xff0c;一般用平均显色指数Ra来表示&#xff0c;Ra值越高&#xff0c;灯光显色能力越强。常见的台灯显色指数最低要求一般是在Ra80以上即可&#xff0c;比较好的…

Spring进阶(AOP的应用)—— 动态代理AOP后controller层的private方法访问失效的问题

前言 动态代理&#xff0c;面向切面编程AOP&#xff08;Aspect Oriented Programming&#xff09;作为spring中的一个重点和难点&#xff0c;需要不断深入理解&#xff0c;并且在项目中学习如何灵活应用。 本篇博客介绍动态代理AOP在实际应用中遇到的private方法访问失效的问…

亚马逊电动玩具UL696的测试报告办理

在亚马逊平台销售的电子产品&#xff0c;要符合指定的标准&#xff0c;如果不合格很容易发生起火&#xff0c;爆炸等危及消费者生命财产的安全&#xff0c;因此很多客户因为缺少UL报告&#xff0c;导致产品被下架&#xff0c;销售权被移除等问题&#xff0c;也少不了同行之间的…