疯狂队列
比较简单的贪心策略:
每次挑数组中剩余元素的最大,最小去去比较
public static int crazy(int[] nums,int n) {//nums已经排好序 if(n==0) return 0; if(n==2) return nums[1]-nums[0]; int diff=nums[n-1]-nums[0];//已经加入队列的0和n-1 int minIn=0; int maxIn=n-1; int minNot=1; int maxNot=n-2; while(minNot<maxNot) { diff+=nums[maxIn]-nums[minNot]; diff+=nums[maxNot]-nums[minIn]; maxIn=maxNot; minIn=minNot; minNot++; maxNot--; } if(minNot==maxNot)//奇数多出来一个 diff+=Math.max(nums[maxIn]-nums[minNot], nums[minNot]-nums[minIn]); return diff; }
本文来自博客园,作者:LeeJuly,转载请注明原文链接:https://www.cnblogs.com/peterleee/p/10851262.html

浙公网安备 33010602011771号