美团笔试题连续最大子序列整除k

Posted 菜鸟更要虚心学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了美团笔试题连续最大子序列整除k相关的知识,希望对你有一定的参考价值。

【思路】

滑动窗口“掐头去尾”

【正确代码】

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner sc = new Scanner(System.in);
 6         while (sc.hasNext()) {
 7             int n = sc.nextInt();
 8             int[] arr = new int[n];
 9             for (int i = 0; i < n; i++) {
10                 arr[i] = sc.nextInt();
11             }
12             int k = sc.nextInt();
13             for (int i = n; i > 0; i--) {//记录元素个数
14                 int sum = 0;
15                 for (int j = 0; j < i; j++) {
16                     sum += arr[j];
17 
18                 }
19                 if (sum % k == 0) {
20                     System.out.println(i);
21                     return;
22                 }
23                 for (int j = 1; j < n - i; j++) {//滑动只需要n-i次循环
24                     sum = sum + arr[j - 1 + i] - arr[j - 1];
25                     if (sum % k == 0) {
26                         System.out.println(i);
27                         return;
28                     }
29                 }
30             }
31             System.out.println(0);
32             return;
33         }
34     }
35 }

 

以上是关于美团笔试题连续最大子序列整除k的主要内容,如果未能解决你的问题,请参考以下文章

交错序列, 美团笔试题

最大矩形, 美团笔试题

最长全1串, 美团笔试题

最短送餐路程计算, 美团笔试题2020

美团笔试题2021.8.29(第四题求大佬解答)

整除k的最大连续子区间(前缀和取模)(2017美团笔试)