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);
}
相关推荐
Mz12215 小时前
day05 移动零、盛水最多的容器、三数之和
数据结构·算法·leetcode
誰能久伴不乏5 小时前
Linux文件套接字AF_UNIX
linux·服务器·c语言·c++·unix
念越5 小时前
判断两棵二叉树是否相同(力扣)
算法·leetcode·入门
小邓   ༽6 小时前
C语言课件(非常详细)
java·c语言·开发语言·python·eclipse·c#·c语言课件
sin_hielo6 小时前
leetcode 3512
数据结构·算法·leetcode
Elias不吃糖6 小时前
LeetCode--130被围绕的区域
数据结构·c++·算法·leetcode·深度优先
烛衔溟6 小时前
C语言算法:动态规划基础
c语言·算法·动态规划·算法设计·dp基础
sinat_602035366 小时前
翁恺 6-
c语言