leetcode164.Maximum Gap
来源:互联网 发布:ai软件工具栏功能 编辑:程序博客网 时间:2024/06/05 11:02
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.
解法:
桶排序,首先找到数组的最大值和最小值,然后设置gap为最大值和最小值的差距除以数组长度,那么我们所需要找到的max值则可以通过遍历每个桶,求当前桶的最大值和下一个桶的最小值的差距,这个差距的最大值即为所求。
代码:
class Solution {public: int maximumGap(vector<int>& nums) { if(nums.size() < 2) return 0; if(nums.size() == 2) return abs(nums[0]-nums[1]); int maxnum = nums[0]; int minnum = nums[0]; for(int i = 0; i < nums.size(); i ++) { maxnum = max(maxnum, nums[i]); minnum = min(minnum, nums[i]); } int gap = ceil((double)(maxnum-minnum)/nums.size()); if(gap == 0) return 0; int len = (maxnum-minnum)/gap+1; int maxi[len]; int mini[len]; for(int i = 0; i < len; i ++) { maxi[i] = minnum; mini[i] = maxnum; } int rank = 0; for(int i = 0; i < nums.size(); i ++) { rank = (nums[i] - minnum) / gap; maxi[rank] = max(maxi[rank],nums[i]); mini[rank] = min(mini[rank],nums[i]); } int ans = 0; int tempmax = maxi[0]; for(int i = 1; i < len; i ++) { if(maxi[i] == minnum && mini[i] == maxnum) continue; else { ans = max(ans,(mini[i]-tempmax)); tempmax = maxi[i]; } // ans = max(ans, (mini[i]-maxi[i-1])); } return ans; }};
注意:
1 gap可能为0
2 有的桶可能为空,所以不能简单的下一个桶的最小值减去当前桶的最大值。
阅读全文
0 0
- [LeetCode164] Maximum Gap
- [LeetCode164]Maximum Gap
- leetcode164~Maximum Gap
- leetcode164.Maximum Gap
- Maximum Gap
- Maximum Gap
- Maximum Gap
- MAXIMUM GAP
- Maximum Gap
- Maximum Gap
- Maximum Gap
- Maximum Gap
- Maximum Gap
- Maximum Gap
- Maximum Gap
- Maximum Gap
- Maximum Gap
- Maximum Gap
- Python--迭代器和生成器
- redis客户端--jedis
- 重定向response.sendRedirect() 与 转发request.getRequsetDispatcher().forward(requset,response)的区别
- 【利用perl的基因数据处理】1.基础的的DNA文件读写和碱基特征统计
- bzoj 2152: 聪聪可可(树的点分治)
- leetcode164.Maximum Gap
- springboot中maven打包
- log4j.properties配置详解与实例-全部测试通过
- 关于scp上传指令/命令
- IDEA创建XML文件没有Spring Config选项
- 2017.10.5 高速公路 思考记录
- Spring框架-第三弹
- MPEG-CDVA标准概述论文粗译 Compact Descriptors for Video Analysis:the Emerging MPEG Standard
- 试题14:调整数组顺序使奇数位于偶数前面