Исключение пустого стека - PullRequest
0 голосов
/ 19 октября 2019

В данной задаче ниже мой код показывает пустой стек Исключение .

Вам дан стек из N целых чисел, так что первыйЭлемент представляет вершину стека, а последний элемент представляет дно стека.
Вам необходимо извлечь хотя бы один элемент из стека.
В любой момент вы можете преобразовать стек в очередь. Нижняя часть стека представляет начало очереди. Вы не можете преобразовать очередь обратно в стек.
Ваша задача состоит в том, чтобы удалить ровно K элементов так, чтобы сумма K удаленных элементов была максимизирована.

Формат ввода:
Первая строка состоит из двух разделенных пробелом целых чисел N и K.
Вторая строка состоит из N разделенных пробелом целых чисел, обозначающих элементы стека.

Выходной формат:
Вывести максимально возможную сумму из K удаленных элементов

import java.util.*;
class Main {
    public static void main(String args[] ) throws Exception {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int k=sc.nextInt();
        Stack<Integer> stack=new Stack<Integer>();
        Stack<Integer> stack2=new Stack<Integer>();
        int sum=0,num;
        while(n-->0){
            num=sc.nextInt();
            stack.push(num);
        }
        while(k-->0){
            if(stack.peek()>stack.lastElement()){
             sum+=stack.peek();
             stack.pop();
            }
            else if(stack.peek()<stack.lastElement()){
                while (!stack.isEmpty()){
                    stack2.push(stack.peek());
                    stack.pop();
                }
                sum+=stack2.peek();
                stack2.pop();
            }
            else if(stack2.peek()<stack2.lastElement()){
              while (!stack2.isEmpty()){
                    stack.push(stack2.peek());
                    stack2.pop();
                }
                sum+=stack.peek();
                stack.pop(); 
            }
        }
        System.out.println(sum);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...