TGViewer
C/C++ Development | YeaHub C/C++ Development | YeaHub @yeahub_c_development · 739 subscribers
Post #37 165
#ЛитКод
Задача: 364. Nested List Weight Sum II

Вам дан вложенный список целых чисел nestedList. Каждый элемент является либо целым числом, либо списком, элементы которого также могут быть целыми числами или другими списками.

Глубина целого числа — это количество списков, внутри которых оно находится. Например, вложенный список [1,[2,2],[[3],2],1] имеет значение каждого целого числа, установленное равным его глубине. Пусть maxDepth будет максимальной глубиной любого целого числа.
Вес целого числа определяется как maxDepth - (глубина целого числа) + 1.

Верните сумму каждого целого числа в nestedList, умноженную на его вес.

Пример:
Input: nestedList = [[1,1],2,[1,1]]
Output: 8
Explanation: Four 1's with a weight of 1, one 2 with a weight of 2.
1*1 + 1*1 + 2*2 + 1*1 + 1*1 = 8


👨‍💻 Алгоритм:

1⃣Инициализировать первый уровень BFS-дерева, добавив все элементы из входного nestedList в очередь.

2⃣Для каждого уровня извлекать передний элемент из очереди. Если это список, то добавить его элементы в очередь. В противном случае обновить значения sumOfElements, maxDepth и sumOfProducts.

3⃣Когда очередь станет пустой, вернуть значение (maxDepth + 1) * sumOfElements - sumOfProducts.

😎 Решение:
#include <vector>
#include <queue>
using namespace std;

class NestedInteger {
public:
bool isInteger() const;
int getInteger() const;
const vector<NestedInteger> &getList() const;
};

class Solution {
public:
int depthSumInverse(vector<NestedInteger>& nestedList) {
queue<NestedInteger> q;
for (auto& ni : nestedList) q.push(ni);

int depth = 1, maxDepth = 0, sumOfElements = 0, sumOfProducts = 0;

while (!q.empty()) {
int size = q.size();
maxDepth = max(maxDepth, depth);

for (int i = 0; i < size; ++i) {
NestedInteger nested = q.front();
q.pop();

if (nested.isInteger()) {
int value = nested.getInteger();
sumOfElements += value;
sumOfProducts += value * depth;
} else {
for (auto& ni : nested.getList()) q.push(ni);
}
}
depth++;
}
return (maxDepth + 1) * sumOfElements - sumOfProducts;
}
};


👉Новости 👉Платформа
More from @yeahub_c_development
  1. Oct 16, 2026#documentation #яндекс #алгоритмы 📚 Структурный подход к алгоритмам: от теории к практике…
  2. Oct 14, 2026#Собес #null #pointer #memory_safety 🤔 Что такое NULL в C? 💬 Кратко: NULL — это макрос,…
  3. Oct 12, 2026#Собес #heap #stack #memory 🤔 Где будут располагаться переменные типа массив и map — на к…
  4. Oct 9, 2026#video #архитектура 📚 Road to Highload: видеопроект о проектировании архитектуры высокона…
  5. Oct 8, 2026#Собес #Docker_Registry #container_registry #Docker_Hub 🤔 Что такое Docker Registry и для…
  6. Oct 7, 2026#Собес #stack #heap #memory_management 🤔 Как отличается время жизни объектов в стеке и ку…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →