2015.1.23 15:00
Given an unsorted array, find the maximum difference between the successive elements in its sorted form.
Try to solve it in linear time/space.
Return 0 if the array contains less than 2 elements.
You may assume all elements in the array are non-negative integers and fit in the 32-bit signed integer range.
Solution:
This here is not an O(n) solution, but O(n * log(n)). Sort the array and find the maximal gap.
As for a linear solution, I'm searching for it...
Discussions online said it could be solved using bucket sort, but that doesn't really satisfy O(n) time scale, right? At least I wouldn't take it for O(n).
Accepted code:
1 // 1AC, not an O(n) solution, though, one not yet come up with... 2 #include <algorithm> 3 using namespace std; 4 5 class Solution { 6 public: 7 int maximumGap(vector<int> &num) { 8 sort(num.begin(), num.end()); 9 int n; 10 11 n = (int)num.size(); 12 if (n < 2) { 13 return 0; 14 } 15 16 int i; 17 int ans = abs(num[0] - num[1]); 18 for (i = 2; i < n; ++i) { 19 ans = max(ans, abs(num[i - 1] - num[i])); 20 } 21 22 return ans; 23 } 24 private: 25 int max(const int &x, const int &y) { 26 return x > y ? x : y; 27 } 28 29 int abs(const int &x) { 30 return x >= 0 ? x : -x; 31 } 32 };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)