欢迎光临
我们一直在努力

计算机和谐连续序列是指一个连续序列中元素的最大值和最小值之间的差值正好是1。 现在,给定一个整数数组,你需要在所有可能的连续子序列中找到最长的和谐连续子序列的长度。-笔试面试资料

本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

这是qklbishe.com第6062 篇笔试面试资料
提供答案分析,通过本文《和谐连续序列是指一个连续序列中元素的最大值和最小值之间的差值正好是1。 现在,给定一个整数数组,你需要在所有可能的连续子序列中找到最长的和谐连续子序列的长度。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

和谐连续序列是指一个连续序列中元素的最大值和最小值之间的差值正好是1。
现在,给定一个整数数组,你需要在所有可能的连续子序列中找到最长的和谐连续子序列的长度。
和谐连续序列是指一个连续序列中元素的最大值和最小值之间的差值正好是1。      现在,给定一个整数数组,你需要在所有可能的连续子序列中找到最长的和谐连续子序列的长度。-笔试面试资料 Ljrrr
import java.io.*;
import java.util.*;
 
/**
 * @author:ljr
 * @date:2020-11-12 18:53
 */
public class Main {
    public static void main(String[] args) throws IOException {
 
        Scanner in = new Scanner(System.in);
        String[] s = in.nextLine().split(" ");
        int[] nums = new int[s.length];
        for (int i = 0; i < s.length; i++) {
            nums[i] = Integer.valueOf(s[i]);
        }
 
        LinkedList<Integer> minL = new LinkedList<>();
        LinkedList<Integer> maxL = new LinkedList<>();
        int l = 0, r = 1;
        int len = 0, max = nums[0], min = nums[0];
        maxL.addLast(0);
        minL.addLast(0);
        int[] res = new int[]{-1, -1};
        while (r < nums.length) {
            while (!minL.isEmpty() && nums[minL.peekLast()] > nums[r]) {
                minL.removeLast();
            }
            minL.addLast(r);
            while (!maxL.isEmpty() && nums[maxL.peekLast()] < nums[r]) {
                maxL.removeLast();
            }
            maxL.addLast(r);
            max = nums[maxL.peekFirst()];
            min = nums[minL.peekFirst()];
            if (max – min < 2) {
                if (r – l + 1 > res[1] – res[0] + 1 && max != min) {
                    res[0] = l;
                    res[1] = r;
                }
            }
            while (max – min > 1) {
                if (l == minL.peekFirst()) {
                    minL.removeFirst();
                }
                if (l == maxL.peekFirst()) {
                    maxL.removeFirst();
                }
                max = nums[maxL.peekFirst()];
                min = nums[minL.peekFirst()];
                l++;
            }
            r++;
        }
        if (res[0] == -1) System.out.println(0);
        else
            System.out.println(res[1] – res[0] + 1);
    }
     
}
今天 14:50:46 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

赞(0)
未经允许不得转载: 京大飞辅助网程序员面试-区块链javago面经 » 计算机和谐连续序列是指一个连续序列中元素的最大值和最小值之间的差值正好是1。 现在,给定一个整数数组,你需要在所有可能的连续子序列中找到最长的和谐连续子序列的长度。-笔试面试资料

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址