用一个数代替重复出现的数字

#include <iostream>

#include <string.h>

using namespace std;

void replace(int *pa,int n)

{

int *arr = new int[n];

arr[0] = pa[0];

int k=0;

for(int i=0;i<n;i++)

{

if(arr[k] == pa[i])

continue;

else

{

k++;

arr[k] = pa[i];

}

}

memset(pa,0,n*4);

for(int i=0;i<k;i++)

{

pa[i] = arr[i];

}

delete[] arr;

}

int main()

{

int arr[] = {1,1,1,2,2,2,1,1,5,5,7,7,0};

replace(arr,sizeof(arr)/sizeof(int));

int i =0;

while(arr[i] != 0)

{

cout<<arr[i]<<‘ ‘;

i++;

}

cout<<endl;

return 0;

}

时间: 2024-12-25 10:17:41

用一个数代替重复出现的数字的相关文章

在一个数组中查找两个重复出现的数字

题目如下:现有一个数组长度为n+1,里面存放有1到n-2,顺序不定,其中有两个数字出现了两次,现在要找出那两个数字. 例子A={2, 3, 1, 4, 5, 2, 4}, 这个数组长度为7,存放了1到5,但2和4出现了两次,程序输出2和4 方法1 蛮力查找 主要思想:对于数组中的第i个数,查找i+1到末尾的所有整数,一个数如果出现了两次就可以在第一次后面找到第二次出现的数. 时间复杂度 O(n^2) #include<stdio.h> void find_duplicates(int* num

有序数组每个数平方后,不同数字的个数?O(n)

此乃一道笔试题,当时的确也出来啦.(但是在细节上还是出错啦,对多次重复出现的数字可能会重复计数,没有记录上次删除的元素) 如题,有序数组,可以知道平方之后在两边的数据较大,中间的数据较小. 因此可以使用两个下标,从两边向中间扫描.将绝对值大的数字删掉,计数即可,并记录刚才删除的数值的绝对值,以免出现多次相同的数据,重复计数的问题. 具体看完整代码: 1 #include <iostream> 2 #include <vector> 3 #include <algorithm&

在给定范围内产生指定个数不重复的随机数

1 public class RandomNumber { 2 /** 3 * 在给定范围内产生指定个数不重复的随机数 4 * @param min 给定范围内最小值 5 * @param max 给定范围内最大值 6 * @param number 产生随机数的个数 7 * @return 8 */ 9 public static int[] createRandomNumber(int min, int max, int number){ 10 if(number > max - min +

牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。 变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80. 问题是,要做多少次变换,使得这个数变成个位数。

牛牛想对一个数做若干次变换,直到这个数只剩下一位数字.变换的规则是:将这个数变成 所有位数上的数字的乘积.比如285经过一次变换后转化成2*8*5=80.问题是,要做多少次变换,使得这个数变成个位数. 输入描述: 输入一个整数.小于等于2,000,000,000. 输出描述: 输出一个整数,表示变换次数. 输入例子: 285 输出例子: 2 1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 int n; 6 sc

一个数组中有65535个数不重复的大于0的整数(即:0~~65535内所有不重复的整数,数序是杂乱无章的), 用最快的方式排序

备注:如果这个问题你考虑到用元素对比就大错特错了 当然这个算法还不是最优的,不能代表普遍性.但可以引申,总体还是这个思路,无非就是“填空”操作 public class OrderLink { /** * 一个数组中有65535个数不重复的大于0的整数(即:0~~65535内所有不重复的整数,数序是杂乱无章的), * 用最快的方式排序 * @param args */ public static void main(String[] args) { //例如:一个数组中有65535个数不重复的大

数组中重复出现的数字

代码实现的不同方法用(#if 0 ..... #endif)注释 1 #include<Windows.h> 2 #include<stdio.h> 3 #if 0 4 //这种方法使用两个指针来遍历数组,运用两个for循环,时间复杂度为O(n^2),空间复杂度为O(1) 5 void test() 6 { 7 int array[7] = { 0, 3, 1, 0, 2, 5, 3 }; 8 int i = 0; 9 for (i = 0; i < 7;i++) 10 {

生成多个不重复的随机数字php

这个没什么好废话的:直奔主题来说思路: 首先是要用mt_rand()函数生成指定个数的随机数字: 然后使用array_unique()函数去重: 因为去重了:所以得到的数字就不够指定个数了: 所以:核心是要用while循环:直到得到指定个数的数字: 到这里基本可以是结束了: 对于追求完美的人来说:还可以再用个sort(): 目的不是要用来排序:主要是将得到的数组key格式化: 用代码来说话:就如下: /** * 生成不重复的随机数 * @param  int $start  需要生成的数字开始范

利用random生成一组随机且不重复的随机数字

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication2 { class Program { public static int Chaos_GetRandomSeed() { byte[] bytes = new byte[4]; System.Security.

java中随机生成随机数及不重复的随机数字

Java中产生随机数 1 . 调用java.lang下面Math类中的random()方法产生随机数 public class MyRandom { public static void main(String[] args) { int  radom = (int)(Math.random()*10); System.out.println(radom); } } 其中Math.random() //产生0~1之间的一个随机小数. 产生一个0~9之间的整数为:(int)(Math.random