假设我有一个数组N \xe2\x86\x90 0 0 0 1 1 1 0 0 1,我如何应用扫描\\来实现数组0 0 0 1 2 3 0 0 1?
+\\N给了我0 0 0 1 2 3 3 3 4这不是我想要的。
+\\\xc2\xa8\xe2\x8a\x86\xe2\x8d\xa8N给我| 1 2 3 | 1 |哪个更接近,但随后我失去了位置。
有没有办法在扫描和乘法中携带原始值,或者也许有更好的方法?
\nAPL 非常适合解决数组类型问题,但我很好奇如何最好地处理 APL 中的图形。我正在玩 leet 问题,例如问题662. 二叉树的最大宽度,该练习适用于具有值/左/右指针样式的 Node 对象,但是测试用例使用像[1,3,null,5,3]. 符号被压缩;未压缩的将是[[1], [3,null], [5,3,null,null]]. 逐层阅读给出[[1], [3], [5,3]](所以2是最宽的层)。
另一个例子,
\n[5,4,7,3,null,2,null,-1,null,9]给出答案 2\n
所以我不确定处理树木的惯用方法。我使用类吗?还是数组最好?在这两种情况下,我如何转换输入?
\n我想出了几个解决方案,但都感觉不优雅。(抱歉没有评论)
\n convert\xe2\x86\x90{\n prev \xe2\x86\x90 {(-\xe2\x8c\x882\xc3\xb7\xe2\x8d\xa8\xe2\x89\xa2\xe2\x8d\xb5)\xe2\x86\x91\xe2\x8d\xb5}\n nxt\xe2\x86\x90{\n \xe2\x8d\xb5\xe2\x89\xa1\xe2\x8d\xac:\xe2\x8d\xba\n m\xe2\x86\x902/\xc3\x97prev \xe2\x8d\xba\n cnt\xe2\x86\x90+/m\n (\xe2\x8d\xba,(m\\cnt\xe2\x86\x91\xe2\x8d\xb5))nxt(cnt\xe2\x86\x93\xe2\x8d\xb5)\n }\n\n (1\xe2\x86\x91\xe2\x8d\xb5)nxt(1\xe2\x86\x93\xe2\x8d\xb5)\n }\nRun Code Online (Sandbox Code Playgroud)\n或者,
\nconvert \xe2\x86\x90 {\n total\xe2\x86\x90(+/\xc3\x97\xe2\x8d\xb5)\n nxt\xe2\x86\x90{\n double\xe2\x86\x90\xc3\x971,2\xe2\x86\x932/0,\xe2\x8d\xb5\n (((+/double)\xe2\x86\x91\xe2\x8d\xba)@\xe2\x8a\xa2)double\n }\n \xe2\x8d\xb5 nxt\xe2\x8d\xa3{(+/\xc3\x97\xe2\x8d\xba)=total}1\n }\n\nRun Code Online (Sandbox Code Playgroud)\n两种解决方案都受到限制,因为它们假设0是null。
一旦我解压了输入,它就只是按其顺序分层的问题
\n\xe2\x8c\x88/(1+\xe2\x8c\x88/-\xe2\x8c\x8a/)\xe2\x88\x98\xe2\x8d\xb8\xc2\xa8\xc3\x97nodes\xe2\x8a\x86\xe2\x8d\xa8\xe2\x8d\xb82*\xc2\xaf1+\xe2\x8d\xb3\xe2\x8c\x882\xe2\x8d\x9f\xe2\x89\xa2nodes\nRun Code Online (Sandbox Code Playgroud)\n在Python中,我可以使用其他方法来遍历,即在每个深度的基础上跟踪最左/最右的节点。
\n注意:这可能是两个问题,一个是解压缩,另一个是如何遍历一般图,但一个取决于另一个
\n