返回空数组问题
javascript吧
全部回复
仅看楼主
level 2
var compress = function(chars) { let len = chars.length; let count = 1; let countArr = []; let newChars = []; let write = 0;
for (let i = 0; i < len; i++) { if (chars[i] === chars[i + 1]) { count++; } else { newChars[write] = chars[i]; countArr[write] = count; write++; count = 1; } }
let result = []; let bothLen = newChars.length;
for (let i = 0; i < bothLen; i++) { result.push(newChars[i], countArr[i]); }
let newResult = result.filter(item => item !== 1); let compressedResult = [];
for (let index = 0; index < newResult.length; index++) { let item = newResult[index]; let itemArr = Array.from(item.toString()); if (itemArr.length > 1) { compressedResult.push(...itemArr); } } return compressedResult;};
这段代码为什么会返回空数组,我打印了数组是有值的
2023年09月23日 15点09分 1
level 13
因为写的人在写的时候神志好像不太清醒。
这段的作用概括来说是统计字符串中每个字符连续重复的次数。如果次数达到两位数,把重复的次数的每个字拆开来放到数组里。这……有什么用吗?
如果上面说的不是原本的设计,我大概能想到这原本可能是想写什么。反正就是最后那个 for 循环有问题。另外这个思路让我觉得“是
妈妈生的
”。别是你写的,不然可得好好敲打敲打。
2023年09月23日 16点09分 2
level 12
// 你连续重复次数的大于等于10就能看的到了 不过就像楼上大佬说的那样 这么做意义吗 还是你在力扣做题?
'aaaaaaaaaabbbbbbbbbbbb'
2023年09月24日 12点09分 3
level 12
原来是力扣的443题 就欺负它识别不了常数额外空间(虽然我也不知道这是啥意思[小乖])
2023年09月24日 13点09分 4
level 12
@BSPR0002 大佬 我这样写算是常数级额外空间不? 还是不太懂这概念[委屈]
2023年09月25日 01点09分 5
主要考量运算过程占用的内存空间是否随输入数据的大小和量呈指数及增长,一般不需要特意去在意这个问题,因为大多数解决方案不会呈指数及增长。
2023年09月25日 18点09分
@BSPR0002 谢谢 大佬 [哈哈]
2023年09月26日 02点09分
level 12
var compress = function(chars) {
const len = chars.length;
let j = 0, count = 1;
for (let i = 0; i < len; i++) {
if (chars[i] !== chars[i + 1]) {
chars[j++] = chars[i];
if (count > 1) {
for (const num of `${count}`) {
chars[j++] = num;
}
}
count = 1;
continue;
}
count++;
}
return j;
};
2023年09月25日 01点09分 6
level 13
@丶影-奈斯 算是吧,但是算不上好
2023年09月25日 17点09分 8
主要这题 不仅得返回长度 还修改原数组 所以我才循环字符串数字的(还在想如果这不算常数级空间的话 难道要对数字循环求余%10一个一个拿出来[委屈]
2023年09月26日 02点09分
1