XM36. 获取n维数组的最大深度
描述
输入参数为字符串型的n维数组,数组的每一项值为数组 或 int型数字。请实现一个函数,可以获取列表嵌套列表的最大深度为多少。输入描述
输入参数为字符串型的 n维数组,列表的每一项值为数组 或 int型数字。数组内的数组,每一项值,也可以是数组 或 int型数字。输出描述
int型数字,表示数组嵌套的深度。示例1
输入:
[[1], [2,3,4], [5,[2,3]], [7], [0,[1,2,3,4],3,5], [1,3], [3,2,4]]
输出:
3
说明:
n维数组的深度为3C 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2021-07-19
#include <stdio.h> #include <stdlib.h> #include <assert.h> const int MAX_N = 1 << 16; // 65536 int main(const int argc, const char* const argv[]) { char input[MAX_N] = ""; gets(input); char stk[20]; int top = -1, ans = 0; const char* p = input; while (*p) { switch (*p) { case '[': *(stk + ++top) = '['; ans = fmax(ans, top + 1); break; case ']': --top; break; default: break; } ++p; } assert(top == -1); return fprintf(stdout, "%d", ans), 0; }
C 解法, 执行用时: 2ms, 内存消耗: 372KB, 提交时间: 2019-09-03
#include<stdio.h> int main() { //字符串类型的数组,还是字符串,长得样子像数组 char a[50000]; int i=0; gets(a);//输入字符串,和scanf区别,可以有空格 int sz=strlen(a); int temp=0;//用来记录深度 int max=0;//表示最大的深度 for(i=0;a[i]!='\0';i++) { if(a[i]=='[')//中【的个数来计算深度 { temp++; if(temp>=max) { max=temp; } } if(a[i]==']') { temp--; } } printf("%d\n",max); return 0; }