C语言 | Leetcode C语言题解之第341题扁平化嵌套列表迭代器

题目:

题解:

cpp 复制代码
struct NestedIterator {
    int *vals;
    int size;
    int cur;
};

void dfs(struct NestedIterator *iter, struct NestedInteger **nestedList, int nestedListSize) {
    for (int i = 0; i < nestedListSize; i++) {
        if (NestedIntegerIsInteger(nestedList[i])) {
            (iter->vals)[(iter->size)++] = NestedIntegerGetInteger(nestedList[i]);
        } else {
            dfs(iter, NestedIntegerGetList(nestedList[i]), NestedIntegerGetListSize(nestedList[i]));
        }
    }
}

struct NestedIterator *nestedIterCreate(struct NestedInteger **nestedList, int nestedListSize) {
    struct NestedIterator *ret = malloc(sizeof(struct NestedIterator));
    ret->vals = malloc(sizeof(int) * 20001);
    ret->size = 0;
    ret->cur = 0;
    dfs(ret, nestedList, nestedListSize);
    return ret;
}

bool nestedIterHasNext(struct NestedIterator *iter) {
    return iter->cur != iter->size;
}

int nestedIterNext(struct NestedIterator *iter) {
    return (iter->vals)[(iter->cur)++];
}

void nestedIterFree(struct NestedIterator *iter) {
    free(iter->vals);
    free(iter);
}
相关推荐
im_AMBER41 分钟前
算法笔记 09
c语言·数据结构·c++·笔记·学习·算法·排序算法
是苏浙4 小时前
零基础入门C语言之C语言内存函数
c语言·开发语言
2301_807997386 小时前
代码随想录-day26
数据结构·c++·算法·leetcode
闭着眼睛学算法6 小时前
【双机位A卷】华为OD笔试之【排序】双机位A-银行插队【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od
小欣加油6 小时前
leetcode 3318 计算子数组的x-sum I
c++·算法·leetcode·职场和发展
海琴烟Sunshine7 小时前
leetcode 190. 颠倒二进制位 python
python·算法·leetcode
AI柠檬7 小时前
C语言基于MPI并行计算矩阵的乘法
c语言·c++·算法
海琴烟Sunshine8 小时前
leetcode 338. 比特位计数 python
python·算法·leetcode
czy87874759 小时前
C语言实现观察者模式
c语言·观察者模式
代码雕刻家9 小时前
1.4.课设实验-数据结构-单链表-文教文化用品品牌2.0
c语言·数据结构