5. 一个二维数组arry[][3]={7,8,5,3,7,4,9,2,5}; (1).删除数组中重复的元素,保留第一个相同的元素,重新排序,剩下元素用0代替,打印出新的二维数组 (2.)对二维数组从小到大排列,并打印出排列后的二维数组 提示:一二维数组转换
时间: 2024-10-29 10:25:10 浏览: 25
首先,我们需要对给定的二维数组`arry[][] = {7, 8, 5, 3, 7, 4, 9, 2, 5}`进行操作:
(1)删除重复元素并保持第一个出现的值,同时将剩余位置填充0,可以按以下步骤进行:
1. 创建一个新的二维数组`newArr[]`,用于存储处理后的结果,初始大小与原数组相同。
2. 遍历原数组,对于每个元素,检查它是否已经存在于新数组中。如果不在,添加到新数组对应位置,并将其设为该元素。
3. 使用哈希集合(如HashSet)辅助快速查找是否存在重复元素,避免双重循环。
以下是Python示例代码:
```python
arr = [[7], [8], [5], [3], [7], [4], [9], [2], [5]]
new_arr = []
seen = set()
for row in arr:
if row[0] not in seen:
new_arr.append(row)
seen.add(row[0])
# 将剩余位置替换为0
for i in range(len(new_arr)):
for j in range(len(new_arr[i])):
if new_arr[i][j] == []:
new_arr[i][j] = 0
print(new_arr)
```
(2)对二维数组按照第一维度升序、第二维度升序排序,然后打印:
由于二维数组实际上是扁平化的,我们可以先将其展平成一维列表,再排序,最后重塑为二维数组。以下是排序后的Python代码:
```python
flat_arr = [val for sublist in arr for val in sublist]
sorted_arr = sorted(flat_arr)
reshaped_arr = [sorted_arr[i:i+3] for i in range(0, len(sorted_arr), 3)]
print(reshaped_arr)
```
注意,这里假设输入数组的每行始终有3个元素。如果没有这个限制,需要额外处理。
阅读全文