请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
时间: 2023-09-11 17:05:32 浏览: 146
### 回答1:
```python
def fun(arr):
n = len(arr)
if n < 2:
return n
j = 0
for i in range(1, n):
if arr[i] != arr[j]:
j += 1
arr[j] = arr[i]
return j + 1
```
测试:
```python
arr = [1, 2, 2, 3, 3, 3, 4, 5, 5]
print(fun(arr)) # 输出:5
print(arr[:5]) # 输出:[1, 2, 3, 4, 5]
```
### 回答2:
定义函数fun如下:
```python
def fun(arr):
if len(arr) == 0: # 如果数组为空,直接返回0
return 0
count = 1 # 初始化计数器为1,表示至少会有一个不重复的数
prev = arr[0] # 用prev保存当前不重复的数
for i in range(1, len(arr)):
if arr[i] != prev: # 如果当前数与prev不相等,表示它是一个新的不重复的数
count += 1 # 计数器加1
prev = arr[i] # 更新prev为当前数
return count # 返回删除后数组中数据的个数
```
函数的思路是遍历一维数组,如果当前数与前一个数不相等,则计数器加1并更新prev为当前数。遍历结束后,计数器的值即为删除后数组中数据的个数。
例如,数组arr为[1, 2, 2, 3, 3, 3, 4, 5, 5],调用fun(arr)会返回5,表示删除后的数组为[1, 2, 3, 4, 5],其中只剩下5个不重复的数。
### 回答3:
编写函数如下:
```python
def fun(arr):
if not arr:
return 0
n = len(arr)
count = 1 # 初始数量为1
for i in range(1, n):
if arr[i] != arr[i-1]: # 如果当前数与前一个数不相同
arr[count] = arr[i] # 将当前数放入索引为count的位置
count += 1
return count
```
函数中的arr表示输入的一维数组,通过遍历数组,将不相同的数依次放入数组的前部分,最后返回剩余的元素个数count即可。
阅读全文