
LeetCode AutoX 安途智行专场竞赛题解
发布日期:2025-04-05 00:44:31
浏览次数:10
分类:精选文章
本文共 3193 字,大约阅读时间需要 10 分钟。
技术分享:各类算法问题解析与优化实践
作为一个技术爱好者,我常常在课余时间探索和解答各类编程问题,希望通过分享这些思考过程,能够为更多的开发者提供Reference。
AutoX-1:网页瀑布流优化
瀑布流是一种高效的网页排版算法,主要思想是将内容逐渐填充,最小的空白处优先填充节省时间。代码实现思路如下:
int getLengthOfWaterfallFlow(int num, vector &block) { if (num >= block.size()) { // 当填充次数超过元素个数 sort(block.begin(), block.end()); return block[block.size() - 1]; } vector temp(block.begin(), block.begin() + num); sort(temp.begin(), temp.end()); int ans = temp[0]; // 逐步填充每个元素 for (int i = num; i < block.size(); ++i) { temp[0] += block[i]; if (temp[0] > temp[1]) { sort(temp.begin(), temp.end()); } ans = max(ans, temp.back()); } return ans;}
核心逻辑是逐步填充最小空白处,并每次更新最大值,实现减少布局计算量的目标。
AutoX-2:蚂蚁王国的蜂蜜分配问题
这个问题需要对大量数据进行动态处理,确保正确性在于将每个操作转换为double类型,这样才能避免整数除法引起的精度问题。
代码实现重点在于:
vectorhoneyQuotes(vector > &handle) { vector ans; vector temp; for (int i = 0; i < handle.size(); ++i) { if (handle[i][0] == 1) { temp.push_back(handle[i][1]); } else if (handle[i][0] == 2) { // 消除重复数据操作 temp.erase(remove_if(temp.begin(), temp.end(), [](double x) { return x == handle[i][1]; }), temp.end()); } else if (handle[i][0] == 3) { // 均值计算 if (temp.empty()) { ans.push_back(-1.0); } else { double sum = accumulate(temp.begin(), temp.end(), 0.0); ans.push_back(sum / temp.size()); } } else if (handle[i][0] == 4) { // 方差统计 if (temp.empty()) { ans.push_back(-1.0); } else { double sum = accumulate(temp.begin(), temp.end(), 0.0); double variance = 0.0; for (double x : temp) { variance += (x - sum / temp.size()) * (x - sum / temp.size()); } ans.push_back(variance / temp.size()); } } } return ans;}
AutoX-3:出行最少购票费用
这个问题可参考打家劫舍II的动态规划解决方案。核心思路是分区间处理,预处理天数包含的购票天数。
代码实现如下:
long long minCostToTravelOnDays(vector &days, vector> &tickets) { int m = tickets.size(); vector pts(m); int n = days.size(); vector dp(n + 1, LLONG_MAX); dp[0] = 0; for (int i = 1; i <= n; ++i) { for (int j = 0; j < m; ++j) { while (days[i - 1] - days[pts[j]] >= tickets[j][0]) { pts[j]++; } dp[i] = min(dp[i], dp[pts[j]] + tickets[j][1]); } } return dp[n];}
实现中需要注意分段处理和优化查询点数组pts,提升查询效率。
AutoX-4:蚂蚁爬行
这题广受欢迎,但本次仓促,建议后续深究。以下是暴力解法思路:
int ant Climbing Brake() { vector data; // 数据预处理... vector dp(data.size(), 1); for (int i = 1; i < data.size(); ++i) { if (data[i] < data[i - 1]) { dp[i] = dp[i - 2] + data[i]; } else { dp[i] = dp[i - 1] + data[i] - min(data[i] - data[i - 1], data[i] - data[i - 2]); } } return dp.back();}
深入思考还可以优化时间复杂度但需更多思考。
如需进一步探讨或有其他问题欢迎在线交流。或许能与你分享一些code优化的小技巧哦!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月21日 07时18分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
"WARNING: Increasing RAM size to 1GB" and "Cannot set up guest memory 'xxx.ram': Invalid argument".
2023-01-23
04-docker-commit构建自定义镜像
2023-01-23
05-docker系列-使用dockerfile构建镜像
2023-01-23
09-docker系列-docker网络你了解多少(下)
2023-01-23
#C8# UVM中的factory机制 #S8.2.3# 重载sequence哪些情形
2023-01-24
cytoscape安装java_Cytoscape史上最全攻略
2023-01-24
c语言编写单片机中断,C语言AVR单片机中断程序写法
2023-01-24
java教学团队管理系统(ssm)
2023-01-24
java教师管理系统(ssm)
2023-01-24
java教师课堂助手app(ssm)
2023-01-24
java教育辅导班信息网(ssm)
2023-01-24
DDNS动态域名无固定IPSEC配置实战
2023-01-24
DELL笔记本UEFI+GPT安装window10与Ubuntu双系统
2023-01-24
EasyUi的使用与代码编写(一)
2023-01-24
Ehcache Java开源缓存框架
2023-01-24
el-select下拉框修改背景色
2023-01-24
ElasticSearch - 基于 JavaRestClient 操作索引库和文档
2023-01-24
ElasticSearch - 索引库和文档相关命令操作
2023-01-24
elasticsearch 7.7.0 单节点配置x-pack
2023-01-24