当前位置: 面试刷题>> 数组压缩 (经典算法题500道)


### 题目描述补充 **题目:数组压缩** 给定一个整数数组 `arr`,要求实现一个函数来“压缩”这个数组。压缩的规则是:连续重复的元素只保留一个,并在其后面加上一个计数表示该元素重复的次数。如果数组中不包含重复元素,则直接返回原数组。 例如: - 输入:`[1, 2, 2, 3, 4, 4, 4]` - 输出:`[1, 2, 2, 3, 4, 3]` 解释:`2` 出现了两次,所以保留两个 `2` 后面跟一个 `2`;`4` 出现了三次,所以保留一个 `4` 后面跟一个 `3`。 注意:输出中的计数表示重复的次数,而不是重复的元素本身。 ### PHP 示例代码 ```php function compressArray($arr) { $result = []; $count = 1; for ($i = 0; $i < count($arr); $i++) { if ($i + 1 < count($arr) && $arr[$i] == $arr[$i + 1]) { $count++; } else { $result[] = $arr[$i]; if ($count > 1) { $result[] = $count; } $count = 1; } } return $result; } // 测试 $arr = [1, 2, 2, 3, 4, 4, 4]; $compressed = compressArray($arr); print_r($compressed); ``` ### Python 示例代码 ```python def compress_array(arr): result = [] count = 1 for i in range(len(arr)): if i + 1 < len(arr) and arr[i] == arr[i + 1]: count += 1 else: result.append(arr[i]) if count > 1: result.append(count) count = 1 return result # 测试 arr = [1, 2, 2, 3, 4, 4, 4] compressed = compress_array(arr) print(compressed) ``` ### JavaScript 示例代码 ```javascript function compressArray(arr) { let result = []; let count = 1; for (let i = 0; i < arr.length; i++) { if (i + 1 < arr.length && arr[i] === arr[i + 1]) { count++; } else { result.push(arr[i]); if (count > 1) { result.push(count); } count = 1; } } return result; } // 测试 let arr = [1, 2, 2, 3, 4, 4, 4]; let compressed = compressArray(arr); console.log(compressed); ``` **码小课网站中有更多相关内容分享给大家学习**,这些示例展示了基本的数组处理技巧,在解决算法问题时非常有用。
推荐面试题