(인코딩 문제는 합이 목표에 도달하는 모든 조합에 대해 후보 arr의 각 요소에 대해 횟수 제한 없이 솔루션을 생성하는 것입니다.)
2D [][]int
切片 theList
在附加 []int
(tmpCombo
) 的递归中通过引用传递,但附加后,其中一个元素被修改,[3 3 3 3 3 3]
更改为 [3 3 3 3 3 2]
。所以我必须在执行 append()
之前复制 tmpCombo
。 append(arr, ele)
是否更改了原始 arr
切片?如果是这样,我应该观察到更多原始的 arr
被修改,但这种情况只发生一次。所以我实际上很困惑这个切片 append()
작동 방식.
https://go.dev/play/p/PH10SxiF7A5
으아아아(또한 for 루프를 수행하고 계속해서 슬라이스에 추가해 보았지만 원래 슬라이스는 전혀 변경되지 않았습니다...)
<code> ... theList: [.... [3 3 3 3 3 3]] theList: [.... [3 3 3 3 3 2] [3 3 3 3 2 2 2]] </code>
이 답변도 같은 문제를 보여주니까 이제 이해가 되네요https://www.php.cn/link/0d924f0e6b3fd0d91074c22727a53966一个>.
기본적으로 슬라이스가 지정된 용량으로 한 위치에 데이터를 저장하지만 길이가 별도의 속성으로 있는 경우... 제 경우에는 변수가 재할당되지 않기 때문에 데이터를 여러 append(tmpCombo, target)
实际上会修改 tmpCombo
로 처리합니다./ 새로운 길이가 업데이트되고 동일한 위치의 기본 데이터가 수정됩니다(재할당되지 않은 경우).
make()
新建切片并copy()
结束(make()
특정 용량 할당)
또는
append(nil []int, arr...]
. (append()
더 많은 메모리를 할당할 수 있지만 자주 수정하는 데 적합합니다.)
위 내용은 Append()는 원래 슬라이스(2D 슬라이스)를 재귀적으로 수정할 수 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!