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);
}
相关推荐
逑之1 小时前
C语言笔记16:文件操作
c语言·笔记·单片机
逑之1 小时前
C语言笔记15:动态内存管理
c语言·网络·笔记
zfxwasaboy1 小时前
DRM KMS 子系统(3)CRTC
linux·c语言
im_AMBER1 小时前
Leetcode 100 在链表中插入最大公约数
数据结构·c++·笔记·学习·算法·leetcode·链表
踩坑记录1 小时前
leetcode hot100 15. 三数之和 medium
算法·leetcode·职场和发展
逑之2 小时前
C语言笔记12:C语言内存函数
c语言·笔记·算法
ltqshs2 小时前
嵌入式C语言-指针数组和数组指针
c语言·数据结构·算法
逑之2 小时前
C语言笔记3:分支与循环
c语言·开发语言·笔记
逑之2 小时前
C语言笔记6:调试
c语言·笔记
Legendary_0083 小时前
从DC接口改成Type-C:LDR6328芯片助力传统设备升级快充体验
c语言·开发语言