Рассчитать высоту для заданных значений напряжения [пиковая точка - начальная точка] - PullRequest
0 голосов
/ 21 февраля 2019

Пример ввода:

8 // Размер массива

3 4 5 7 8 9 4 3 // Voltage

Пример вывода:

6// 9-3 [9 - пиковое напряжение и 3 - точка изложения]

Это код, который я написал:

import java.util.Scanner;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;

public class Main
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        int size = scan.nextInt();
        scan.nextLine();
        String input = scan.nextLine();
        String[] s = input.split(" ");

        List <Integer> list = new ArrayList<Integer>();

        for(int i=0 ; i<size ; i++)
        {
            list.add(Integer.parseInt(s[i]));
        }
        list.sort(Collections.reverseOrder());

    System.out.println(list.get(0)-list.get(list.size()-1));
    //System.out.println("LAST : " +list.get(0)+"FIRST :"+list.get(list.size()-1));
    }
}

Но это работает только для одного пика.но что, если ввод будет что-то вроде:

12 // размер массива

1 2 3 4 2 1 -1 0 2 7 5 4 // напряжения

ответ должен быть

Первый спайк:

Start Point = 1

Peak Point = 4

Spike height = 4 - 1 = 3.

Второй спайк:

Start Point = -1

Peak Point = 7

Spike height = 7 - (-1) = 8.

Я попытался разделить список на два списка, каждая из которых имеет свое пиковое значение.

Я ищу решение, которое может найти любое количество шипов.

Спасибо!

РЕДАКТИРОВАТЬ: --------

int temp = 0;
        int count = 0;
        int foo = 0;
        for(int i=0 ; i<list.size()-1 ; i++)
        {
            temp = list.get(i);
            if(list.get(i+1)-temp == 1)
            {
                count++;
            }
            else
            {
                foo++;
            }
        }

Я пробовал выше, используя count и foo в качестве индексов списка:

System.out.println(list.get(count)-list.get(0));
System.out.println(list.get((count)+foo)-list.get(foo));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...