用dp[i]记录以第i个元素作为序列的开始。遍历一遍原始序列nums,对于第K个值,将大于maxLen的序列dp[i]+nums[k],判断是否为K的倍数,更新maxLen的值。 public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); in.nextLine(); int[] nums = new int[n]; for (int i = 0; i < n; i++) nums[i] = in.nextInt(); in.nextLine(); int k = Integer.valueOf(in.nextLine()); int maxLen = 0; int[] dp = new int[n]; for (int i = 0; i < n; i++) { for (int j = 0; j <= i - maxLen; j++) { dp[j] += nums[i]; if (dp[j] % k == 0 && (i - j + 1) > maxLen) { maxLen = (i - j) + 1; break; } } } System.out.println(maxLen); in.close(); }
点赞 2

相关推荐

点赞 评论 收藏
分享
07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
zzzzhz:兄弟你先猛猛投简历至少三百家,能约到面试就去面。最近可以速成智能小车,智慧家居烂大街的项目,不需要自己写,只需要把里面的代码讲解看明白就行。把其中涉及到的八股文都拿出来单独背一下,我去年找工作就一个智能小车智慧家居找了10k差不多。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务