Вы всегда можете проверить решения, выбрав их для большого вектора
q)\ts {(x where x=0N):1;x} fills {(x where x=0W):0N;x}10000000#0N 2 3 0W 0N 20 30 0W
196 553649552
q)\ts 1^fills {(x where x=0W):0N;x}10000000#0N 2 3 0W 0N 20 30 0W
190 553649216
Для больших векторов вы должны получить небольшое улучшение, заполнив только первый элемент 1, предполагая, что это единственный, который вам нужен по умолчанию
q)@[;0;1^]fills {(x where x=0W):0N;x}0N 2 3 0W 0N 20 30 0W
1 2 3 3 3 20 30 30
Однако, если у вас есть последовательность нулей в начале (а не только одна), это не поможет
q)@[;0;1^]fills {(x where x=0W):0N;x}0N 0N 2 3 0W 0N 20 30 0W
1 0N 2 3 3 3 20 30 30
В этом случае вам лучше пойти с 1^
на весь вектор