吉大考研真题-数组去重
程序员文章站
2022-05-16 22:06:46
...
这个题为删除数组中重复的元素。检测到重复,则每个元素前移一位,再从当前元素检测一遍,总元素数减一。
顺便说一句,若题目中表明是输出....等模糊的意思,可以有个简单的做法。
如果a[i]=a[i+1] ,则将a[i+1]置0 ,即将重复的元素置为0。然后再输出的时候,a[k]==0,则不输出·即省去了复杂的移位操作。
第一个代码:最老实的方法
第二个代码:一遍哈希表
#include <stdio.h>
void fun(int a[], int n)
{
int i, j;
for (i = 0; i < n - 1; i++)
{
if (a[i] == a[i + 1])
{
for (j = i + 1; j < n - 1; j++)
a[j] = a[j + 1];
i--;
n--;
}
}
for (i = 0; i < n; i++)
{
printf("%d", a[i]);
}
}
int main()
{
int a[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4, 5, 1, 1, 1};
fun(a, 15);
getchar();
return 0;
}
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void fun (int before[], int n)
{
Map<Integer, Integer> map = new HashMap<>();
int j=0;
int after[]=new int[n];
for (int i = 0; i <n ; i++)
{
if (!map.containsKey(before[i]))
{
map.put(before[i], j);
after[j]=before[i];
j++;
}
}
for (int k = 0; k < j ; k++) {
System.out.print(after[k]+",");
}
}
public static void main(String[] args) {
int num[] = new int[]{1, 8, 1, 9, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4, 5};
fun(num,15);
}
}
上一篇: 考研 线性表 删除线性表的最小值 王道
下一篇: 浙大计应及国家公派留学
推荐阅读