搜狗笔试题 园 自己的思路 不正确 求指正

计算出每个临近点的差值,如【10,180,183,198】 换算成为 【172,170, 3,15】
接下来遍历一遍新数组,sum加和,并把加和的值放入队列中如  173时(173 = 170 + 3),队列内为【170, 3】
if (sum > 180){
sum = sum - queue.peek();
}
max记录小于等于180内的结果

请问思路哪里有问题  没想明白

全部评论
import java.text.DecimalFormat; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Sougou { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); double[] a = new double[n]; for (int i = 0; i < n; i++) { a[i] = sc.nextDouble(); } double pre = a[0]; for (int i = 0; i < n; i++){ if (i == 0){ a[0] = 360 - a[n - 1] + a[0]; }else{ double temp = a[i]; a[i] = a[i] - pre; pre = temp; } } double max = 0; double sum = 0; Queue<Double> queue = new LinkedList(); for (int i = 0; i < n; i++){ sum = sum + a[i]; queue.add(a[i]); while (sum > 180){ sum = sum - queue.peek(); } max = Math.max(max, sum); } DecimalFormat format = new DecimalFormat(); format.setMinimumFractionDigits(8); System.out.println(format.format(max)); } } 贴出来代码吧 不知道对不对 希望牛人来解释一下
点赞 回复 分享
发布于 2017-09-08 18:32
看我刚发的帖子
点赞 回复 分享
发布于 2017-09-08 18:27
想了想  其实还可以转化为求取  一个数组中的子数组最接近180的值
点赞 回复 分享
发布于 2017-09-08 18:26

相关推荐

想run的马里奥在学...:这个学历帮你扫平百分之80的障碍,投就完了,这会找不到就等3月暑期一样能找到
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务