社区
C语言
帖子详情
简单算法:去掉1维数组中的重复项
carlosadps
2005-01-19 03:43:59
比如我把 1,2,4,4,6,5,8等数据放入1维数组中,在该数组中去掉重复的项
处理后变成 1,2,4,6,5,8
那位大哥给一个较好的算法好吗?
各位兄弟就直接写点代码,我比较愚,光说是听不懂的。
...全文
1219
36
打赏
收藏
简单算法:去掉1维数组中的重复项
比如我把 1,2,4,4,6,5,8等数据放入1维数组中,在该数组中去掉重复的项 处理后变成 1,2,4,6,5,8 那位大哥给一个较好的算法好吗? 各位兄弟就直接写点代码,我比较愚,光说是听不懂的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
36 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zrpxd
2005-01-23
打赏
举报
回复
还有一种最简单最好理解的方法:
#include<stdio.h>
#include<string.h>
main()
{
int i,j,k;
char str[20];
int len;
gets(str);
len=strlen(str);
for(i=0;i<len;i++)
{
for(k=j=i+1;j<len;j++)
{
if(str[j]!=str[i])
{
str[k]=str[j];
k++;
}
}
str[k]='\0';
}
}
ybt631
2005-01-23
打赏
举报
回复
二叉排序树不错
zyp2kyear
2005-01-23
打赏
举报
回复
先找最大数8,建立一个数组bool a[8+1],全部初始化为false,
1,2,4,4,6,5,8
a[0] = false;
a[1] = true; //1
a[2] = true; //2
a[3] = false; //
a[4] = true; //4
a[4] = true; //4
a[5] = false;
a[6] = true; //6
a[7] = false;
a[8] = true; //8
输出数组中为真的序号就行了
macrod
2005-01-22
打赏
举报
回复
从头读数,向后找,找到一样的,设置为不可能值。
lbaby
2005-01-22
打赏
举报
回复
用二叉树是比较简单的,由于c++中的set是不重复的二叉树
所以,用set来写,是相当简单的:
#include <iostream>
#include <set>
int main(void)
{
int ar[] = {1,1,2,2,3,3,4,4,5,5};
std::set<int> ist(ar,ar+sizeof(ar)/sizeof(ar[0]));
std::set<int>::const_iterator itor;
for( itor = ist.begin();
itor != ist.end();
++itor)
{ std::cout<<*itor<<'\n';}
}
1
2
3
4
5
lbaby
2005-01-22
打赏
举报
回复
用c++可以么?
tigergt
2005-01-22
打赏
举报
回复
int a[7] = {1,2,4,4,6,5,8}, Tail = 0;
BOOL bFind;
for(int i = 1; i < 7; i++)
{
bFind = false;
for(int j = 0; j <= Tail; j++)
{
if(a[i] == a[j])
{
bFind = true;
break;
}
}
if(!bFind)
{
a[Tail++] = a[i];
}
else
{
for(int j = Tail+1; j < 7; j++)
{
a[j] = a[j+1];
}
a[6] = -1;
}
}
后面缺损的为-1
murphy008
2005-01-20
打赏
举报
回复
顶一下!效率最高的办法就是 指针+排序(建议插值法),代码最简单的楼上已经有了!我正在安装VC,不好意思,不能立即给出代码!呵呵!
TomDebug
2005-01-20
打赏
举报
回复
方法1:动态二叉树
方法2:(matlab)中的
any(diff(sort(a)))
效率绝对高
顶matlab
zhousqy
2005-01-20
打赏
举报
回复
再次BS以下偶自己。。。是二叉排序树。。。
--------------------------------------
不错。
--------------------------------------
读数组、插入一棵二叉排序树中、在遍历二叉排序树存到数组中。
zhousqy
2005-01-20
打赏
举报
回复
再次BS以下偶自己。。。是二叉排序树。。。
--------------------------------------
不错。
idler
2005-01-20
打赏
举报
回复
那个是set_union函数。
zhliangle
2005-01-20
打赏
举报
回复
如果用C++編的話可以直接用一個泛算法函數就解決了.不過這個函數我不記得了.哈哈.但是我保證是有的.
macrod
2005-01-20
打赏
举报
回复
个人认为宁无悔program 最初的想法加上 lxd2 的使用链表节省空间的实现就可以了,没必要那么复杂。
lxd2
2005-01-20
打赏
举报
回复
楼主的意思是要保持原来的次序,所以先排序估计行不通!
我用了简单的比较方式,先定义一个链表,把不重复的数依次插在链表的末尾,链表是动态的
故没有浪费内存资源,该程序在vc6.0下通过
#include "stdafx.h"
#include "iostream.h"
struct list
{
int data;
list * next;
};
void main()
{
int a[]={1,2,7,3,3,4,5,4,5,6};
list *head=NULL;
list *tail=NULL;
for(int i=0;i<sizeof(a)/4;i++)
{
bool flag=false;
for(list *p=head;p;p=p->next)
{
if(p->data==a[i])
{
flag=true;
break;
}
}
if(!flag)
{
list *temp=new list;
if(head==NULL)
{
temp->data=a[i];
temp->next=NULL;
head=temp;
tail=temp;
}
else
{
temp->data=a[i];
temp->next=NULL;
tail->next=temp;
tail=temp;
}
}
}
for(list *q=head;q;q=q->next)
cout<<q->data;
}
xue23
2005-01-20
打赏
举报
回复
用冒泡法。把重复的数据去掉。
a[k];
b[k];
int m = 0;
for(int i= 0; i < k-1 ; i++)
{
bool flag = false;
for(int j =i+1; j< k; j ++)
{
if(a[i] == a[j])
{ flag = true; break;}
}
if(flag == false)
b[m++] = a[i];
}
xue23
2005-01-20
打赏
举报
回复
用起泡法。把重新的数据去掉
lovezn0424
2005-01-20
打赏
举报
回复
我觉得楼主的意思可能是要保持原来的次序,所以先排序估计行不通吧!
所以我觉得还是开辟一个新空间,再往里塞东西就可以了。如果有了就不塞……
不过觉得总体上效率不是很高,而且浪费空间。不过实现比较简单……
楼主看着帮吧……
yinyl
2005-01-20
打赏
举报
回复
用关联数组怎么样?
idler
2005-01-20
打赏
举报
回复
插值排序法都可以用,效率直接插入太低,不如二叉排序树。
加载更多回复(15)
PHP笛卡尔积实现
算法
示例
本文实例讲述了PHP笛卡尔积实现
算法
。分享给大家供大家参考,具体如下: <?php $arr = array(array(1,3,4,5),array(3,5,7,9),array(76,6,1,0)); /** ** 实现二
维
数组的笛卡尔积组合 ** $arr 要进行笛卡尔积的二
维
数组 ** $str 最终实现的笛卡尔积组合,可不写 ** @return array **/ function cartesian($arr,$str = array()){ //去除第一个元素 $first = array_shift($arr); //判断是否是第一次进行拼接 if(coun
leetcode分类-Leetcode:力码
leetcode 分类力码 一些值得回顾的问题分类
算法
字符串
算法
字符串搜索:028(通过基本搜索;考虑 KMP) 635 弦有可比性! 数组求和问题 001 时间复杂度为 O(n) 的未排序二和 015 时间复杂度为 O(n^2) 的三和 016 三和最近 018 四和 039 组合和 040组合和2 562 遍历二
维
数组(矩阵)的方法 技巧 011 装有最多水的容器,时间为 O(n)。 证明正确。 004 时间复杂度为 O(log(n)) 的两个排序数组的中位数 017 字母组合。 数组遍历。 020 如何递归定义括号字符串的有效性并找出一种轻松分治的方法? 022 如何使组合支架始终平衡? 050 幂到一个非常大的指数。 102 (Java) 泛型不是协变 659 Python 集合和枚举的使用。 子序列和子串的区别。 660
去掉
9是什么意思? 665 判断数组是否非递减(<=1 异常) 667 美丽的排列 2:构造一个包含 [1,n] 的长度为 n 的列表,其中邻居之间的 abs 差异恰好形成 k 个不同的数字 数字消除: 原来的约瑟夫问题:消除一个,跳过一个,圈起来。 记
python二
维
数组去
重复
_python 去除二
维
数组/二
维
列表中的
重复
行方法
python 去除二
维
数组/二
维
列表中的
重复
行方法之前提到去除一
维
数组中
的
重复
元素用unique()函数,如果要去除二
维
数组中
的
重复
行该怎么操作呢?import numpy as nparr = np.array([[1, 2],[3, 4],[5, 6],[7, 8],[3, 4],[1, 2]])print(np.array(list(set([tuple(t) for t in arr]))...
原生JS去除二
维
数组中
重复
了的一
维
数组
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>去除二
维
数组中
重复
的一
维
数组</title> </head> <body> <d
php 去除二
维
数组
重复
除了使用 array_map 函数和 serialize 函数之外,我们还可以使用 array_reduce 函数和 array_merge 函数,将二
维
数组中
的元素进行扁平化处理,形成一
维
数组,然后再使用 array_unique 函数对一
维
数组进行去重操作,最后再利用 array_map 函数将一
维
数组转换回二
维
数组。我们可以使用 serialize 函数将每个元素进行序列化,然后利用 PHP 的 array_unique 函数对序列化后的元素进行去重,最后再将序列化后的元素反序列化为原元素。
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章