【leetcode】 Maximum Gap
来源:互联网 发布:萧山网络问政南阳 编辑:程序博客网 时间:2024/05/21 00:01
问题描述:
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.
问题分析:
用桶排序或者基数排序都可以解决。详细算法见:http://blog.csdn.net/gqqnb/article/details/42142639
public int maximumGap(int[] num) { if(num.length<2) return 0; int max=num[0]; int min=num[0]; for(int i:num){ min=Math.min(i, min); max=Math.max(i, max); } int gap = (int)Math.ceil((double)(max - min)/(num.length - 1)); int n = (max-min)/gap+1; int[] minList = new int[n]; int[] maxList = new int[n]; List[] list = new ArrayList[n]; for(int i=0;i<n;i++){ list[i]=new ArrayList(); } //遍历 for(int i=0;i<num.length;i++){ if(list[(num[i]-min)/gap].size()==0){ minList[(num[i]-min)/gap]=num[i]; maxList[(num[i]-min)/gap]=num[i];// System.out.println("min1"+minList[(num[i]-min)/num.length]); }else{ minList[(num[i]-min)/gap]=minList[(num[i]-min)/gap]>num[i]?num[i]:minList[(num[i]-min)/gap]; maxList[(num[i]-min)/gap]=maxList[(num[i]-min)/gap]>num[i]?maxList[(num[i]-min)/gap]:num[i];// System.out.println("min"+minList[(num[i]-min)/num.length]); } list[(num[i]-min)/gap].add(num[i]); } //开始遍历条件数组 int previous=Integer.MIN_VALUE; int temp=0; List resultList = new ArrayList(); for(int i=0;i<n;i++){// System.out.println("list "+i+" size is "+list[i].size());if(list[i].size()==0){continue;}else{temp=maxList[i]-minList[i];//System.out.println(" temp is "+temp+" minList["+i+"] "+minList[i]);resultList.add(temp>(minList[i]-previous)?temp:(minList[i]-previous));previous=maxList[i];} } int answer = (int) resultList.get(0);// System.out.println(answer); for(int i=0;i<resultList.size();i++) answer=(int) (answer<((Integer)resultList.get(i))?(Integer)resultList.get(i):answer); return answer; }
0 0
- leetcode-Maximum Gap
- [LeetCode] Maximum Gap
- LeetCode Maximum Gap
- [leetCode] Maximum Gap
- leetcode 155: Maximum Gap
- LeetCode(164) Maximum Gap
- [LeetCode] Maximum Gap
- [leetcode 164] Maximum Gap
- [leetcode]Maximum Gap
- LeetCode - Maximum Gap 题解
- Maximum Gap|leetcode题解
- LeetCode[Sort]: Maximum Gap
- [LeetCode] Maximum Gap
- leetcode maximum gap
- [LeetCode]Maximum Gap
- LeetCode OJ Maximum Gap
- LeetCode Maximum Gap
- 【leetcode】 Maximum Gap
- 关于利用live555,RTSP取流
- 94.Binary Tree Inorder Traversal
- MySQL 5.7 Fabric: any good?
- 解决eclipse中org.w3c.dom.Node类老报The method getTextContent() is undefined 问题
- 数据库的设计原则
- 【leetcode】 Maximum Gap
- 黑马程序员--OC-内存
- 变量、初始化块和构造方法的初始化顺序问题(笔试题)
- x264使用示例 /** * @note x264的编码示例. * 使用x264的 (2013-07-03 10:40:12)
- C++之“友元类”学习笔记
- 每个人都宣称自己是别人——http协议useragent的历史变迁
- ADB server didn't ACK * failed to start daemon *
- easyUI文本框
- 解题报告 之 HDU5115 Dire Wolf