删除一维数组中重复的数字
2023-01-17阅读(748)
问:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数
- 答:1、创建java类,TestEqual
2、编写去重函数,
public static int unique1(int[] nums) {
if (nums.length == 0) {
return 0;
}
Set<Integer> set = new HashSet<Integer>();
int index = 0;
for (int i = 0, len = nums.length; i < len; i++) {
if (set.add(nums[i])) {
nums[index++] = nums[i];
}
}
return index;
}
3、编写打印函数,
public static void printNums(int[] nums, int length) {
for (int i = 0; i < length - 1; i++) {
System.out.print(nums[i] + " ");
}
System.out.println(nums[length - 1]);
}
4、初始化入参数据,int[] str = { 1, 1, 2, 3, 4, 4, 4, 5, 9, 9 },执行代码,consle输出踢重后数据,1,2,3,4,5,9, - 答:#include<stdio.h>
int fun(int *a,int n) { int i,j;
for ( i=j=0;i<n;i++ ) if ( a[i]!=a[j] ) { j++; a[j]=a[i]; }
return j+1;
}
void main() { int a[10]={1,1,2,3,4,4,4,5,9,9},i,n;
for ( i=0;i<10;i++ ) printf("%d ",a[i]); printf("\n");
n=fun(a,10);
for ( i=0;i<n;i++ ) printf("%d ",a[i]); printf("\n");
}
问:c语言:删去一维数组中所有相同的数, 使之只剩一个.求一完整正确程序
- 答:#include<stdio.h>
int fun(int a[],int n)
{
int i,j=0;
for(i=1;i<n;i++)
{
if(a[j]!=a[i])
a[++j]=a[i];
}
return j;
}
void main()
{
int a[]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10};
int len,i;
len=fun(a,sizeof(a)/sizeof(int));
for(i=0;i<=len;i++)
printf("%d ",a[i]);
printf("\n");
}
问:编写程序在被调函数中删去一维数组中所有相同的数,使之只剩一个,被调函数返回删除后数组中的数据的个数
- 答:int main()
{
int a[20]={4,4,4,6,7,7,7,9,9,9,12,12,24,34,34,34,56,67,78,90};
int i=0,j=0,k=0,b[20];//b[]为保存不相同的数组成员
for(i=0;i<20;i++)//遍历每个数组成员
{
for(j=0;j<k;j++)//数组成员与不同数组成员比较
{
if(b[j]==a[i])//如果与不同数组比较有相同者,跳出,进行下一个数组成员比较
break;
}
if(j==k)//如果与不同数组的成员都不同,则加入不同数组;
{
b[k]=a[i];
k++;
}
}
for(i=0;i<k;i++)
printf("%d,",b[i]);
getchar();
return 0;
}