每日一练 1(双指针)(单调性)

1.题目解析

2.解题

2.1暴力解法(遍历)

用for循环穷举所有组合的容积,找出最大值

测试用例可通过,但是提交不会过,这是一道中等题,对时间复杂度会有要求,这里的时间复杂度为O(N*2),提交就会显示超时。

2.2更优解

思路

首先本题是第一道求最值问题,我们可以尝试找出体积增长的规律(单调性)来运用双指针来解题。

就本题给出的示例:

a.给出双指针,准备遍历:

b.计算容积

c.观察遍历规律:(这里"指针"就代表指向元素)

d.得出结论:

前一次体积计算完之后,无需将较小的一方与剩下的元素进行遍历,而是直接舍去较小值与其他元素组合的情况,大大减少计算量,只需要遍历一次即可。

写代码

建议大家了解算法原理之后自己上手敲一遍代码再看答案

相关推荐
历程里程碑19 小时前
各种排序法大全
c语言·数据结构·笔记·算法·排序算法
u***u68519 小时前
C++在系统中的异常处理
java·开发语言·c++
少许极端19 小时前
算法奇妙屋(十四)-简单多状态dp问题
算法·动态规划·图解算法·简单多状态dp·打家劫舍问题·买卖股票问题全解
4***R24020 小时前
C++在音视频处理中的库
开发语言·c++·音视频
2301_8234380220 小时前
解析论文《复杂海上救援环境中无人机群的双阶段协作路径规划与任务分配》
人工智能·算法·无人机
周一上线20 小时前
EDA 中的 DRC检测——并查集优化mincut规则检测
c++·eda·经验·工艺
embrace9920 小时前
【C语言学习】结构体详解
android·c语言·开发语言·数据结构·学习·算法·青少年编程
Ayanami_Reii20 小时前
基础数学算法-开关问题
数学·算法·高斯消元
稚辉君.MCA_P8_Java21 小时前
通义 Go 语言实现的插入排序(Insertion Sort)
数据结构·后端·算法·架构·golang
1***s63221 小时前
C++移动语义优化
开发语言·c++