Ошибка выполнения в следующей проблеме с литкодом

Ссылка на проблему - https://leetcode.com/problems/maximum-average-subarray-i/

class Solution 
{
public:
double findMaxAverage(vector<int>& nums, int k)
{
deque<pair<int,int>> d;       //deque since its a sliding window problem
vector<double> ans;          //to return answer
double avg;
double sum=0;
int n=nums.size();

        for(int i=0;i<n;i++)
        {
            if (!d.empty() && d.front().second<=(i-k))                 //out of window size
            {
                avg=sum/k;
                ans.push_back(avg);          //push the average of k elements in answer vector
                sum=sum-d.front().first;     //remove the sum of first element when moving to next
                d.pop_front();               //remove front element of deque
                
            }
            
            d.push_back(make_pair(nums[i],i)); //push current element in deque
            sum=sum+d.back().first;            //add it to sum
            
        }
        
        return *max_element(ans.begin(), ans.end());   //return maximum average of subarray
    }
};

Я пытался решить проблему leetcode 643 с максимальным средним подмассивом I , что является простой проблемой, основанной на подходе скользящего окна.

Я написал код и получил сообщение об ошибке времени выполнения "Строка 811: Char 16: ошибка времени выполнения: привязка ссылки к нулевому указателю типа "двойной" (stl_iterator.h) РЕЗЮМЕ: UndefinedBehaviorSanitizer: неопределенное поведение /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c"

Кто-нибудь может помочь с этим? Заранее спасибо.

Что произойдет, если условие для if (!d.empty() && d.front().second<=(i-k)) будет никогда истинным? Что в итоге держит ans (подсказка: ничего). Как вы думаете, что делает разыменование *max_element(ans.begin(), ans.end()) при вызове пустой последовательности?

WhozCraig 01.04.2022 09:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка здесь

return *max_element(ans.begin(), ans.end());

Если ans пусто, вы разыменовываете ans.end().

Другие вопросы по теме