JSK 11: 移除数组中的重复元素

题目描述

给定一个升序排列的数组,去掉重复的数,并输出新的数组的长度。 例如:数组 $A = \{1, 1, 2\}$,你的程序应该输出 $2$ 即新数组的长度,新数组为 $\{1, 2\}$。 要求:不能新开数组分配额外的空间,即常数空间限制。

输入

输入一个整数 $n(1 \leq n \leq 1000)$。 接下来一行 $n$ 个整数 $A_i(-1000 \leq A_i \leq 1000)$,表示数组 $A$ 中的每个元素。

输出

输出一个整数,表示新数组长度。

样例输入

5
0 0 1 1 2

样例输出

3

分析:终于找到水题了!开心。这题就是用map方便计数就好,或者set去重也可以。

#include <iostream>
#include <string>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <deque>
#include <map>
#define range(i,a,b) for(int i=a;i<=b;++i)
#define LL long long
#define rerange(i,a,b) for(int i=a;i>=b;--i)
#define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
using namespace std;
map<int,bool>nn;
int n;
void init(){
    cin>>n;
    while(n--){
        int tmp;
        cin>>tmp;
        nn[tmp]=true;
    }
}
void solve(){
    int ans=0;
    map<int,bool>::iterator iter;
    for(iter=nn.begin();iter!=nn.end();++iter)ans+=(iter->second?1:0);
    cout<<ans<<endl;
}
int main() {
    init();
    solve();
    return 0;
}

原文地址:https://www.cnblogs.com/Rhythm-/p/9339304.html

时间: 2024-10-10 19:53:16

JSK 11: 移除数组中的重复元素的相关文章

第11题:移除数组中的重复元素

/* 前几天去爬泰山了,一直没更新,上山时还没什么感觉,下山后简直要崩溃啊,骨头都散了,继续更新...... */ 第11题:移除数组中的重复元素 给定一个升序排列的数组,去掉重复的数,并返回新的数组的长度. 例如: 数组A = {1, 1, 2},你的函数应该返回长度2,新数组为{1, 2} 要求: 不能新开数组分配额外的空间.即常数空间限制. 提示: 输入一个整数n,以及其对应的数组A[n],输出新数组长度 样例输入 5 0 0 1 1 2 样例输出 3 解析: #include <stdi

计蒜客 移除数组中的重复元素

移除数组中的重复元素 给定一个升序排列的数组,去掉重复的数,并返回新的数组的长度. 例如: 数组A = {1, 1, 2},你的函数应该返回长度2,新数组为{1, 2} 要求: 不能新开数组分配额外的空间.即常数空间限制. 提示: 输入一个整数n,以及其对应的数组A[n],输出新数组长度 样例输入 5 0 0 1 1 2 样例输出 3 1 #include<iostream> 2 #include<vector> 3 #define MAX 100000 4 using names

计蒜客 移除数组中的重复元素 (双指针扫描)

给定一个升序排列的数组,去掉重复的数,并返回新的数组的长度. 例如: 数组A = {1, 1, 2},你的函数应该返回长度2,新数组为{1, 2} 要求: 不能新开数组分配额外的空间.即常数空间限制. 提示: 输入一个整数n,以及其对应的数组A[n],输出新数组长度 样例输入 5 0 0 1 1 2 样例输出 3 1 #include <iostream> 2 using namespace std; 3 int main(){ 4 int n, ans; 5 cin >> n;

移除数组中的重复元素

给定一个升序排列的数组,去掉重复的数,并输出新的数组的长度. 例如:数组 A={1,1,2},你的程序应该输出 222 即新数组的长度,新数组为 {1,2}. 要求:不能新开数组分配额外的空间,即常数空间限制. 输入格式 输入一个整数 n(1≤n≤1000). 接下来一行 nnn 个整数 Ai(?1000≤Ai≤1000),表示数组 A 中的每个元素. 输出格式 输出一个整数,表示新数组长度. 样例输入 5 0 0 1 1 2 样例输出 3 Python的数组真心的不方便,慢慢适应吧.

计蒜客 挑战难题 移除数组中的重复元素

给定一个升序排列的数组,去掉重复的数,并返回新的数组的长度. 例如: 数组A = {1, 1, 2},你的函数应该返回长度2,新数组为{1, 2} 要求: 不能新开数组分配额外的空间.即常数空间限制. 提示: 输入一个整数n,以及其对应的数组A[n],输出新数组长度 样例输入 5 0 0 1 1 2 样例输出 3 =========================第一次code: 1 import java.util.ArrayList; 2 import java.util.List; 3 i

去除数组中的重复元素

方法1:开辟辅助空间 #include<vector> #include<algorithm> #include<iostream> #define LENGTH 10 using namespace std; void Unique(){ int array[LENGTH]={1,1,1,2,2,4,4,6,6,6}; int pre=array[0],cur=array[1]; int temp[LENGTH]; int k=0; int i=1;//cur和i指向

【LeetCode-面试算法经典-Java实现】【026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)】

[026-Remove Duplicates from Sorted Array(删除排序数组中的重复元素)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for anot

删除数组中的重复元素,并返回去重的数组

/*删除数组中的重复元素,并返回去重的数组*/ function delRepeatNum(arr){ var result = []; var middleObj = {}; var temp; for(var i = 0; i < arr.length; i++){ temp = arr[i]; middleObj[temp] = 1; } for(temp in middleObj){ result.push(temp); } return result; }

74 使用BitSet输出数组中的重复元素

[本文链接] http://www.cnblogs.com/hellogiser/p/using-bitset-to-print-duplicate-elements-of-array.html [题目] 一个数组有L个元素,取值范围为0到N,其中N<32000,但是不知道N的确切大小.L个元素中有若干个重复元素,只有4KB的内存,如何输出重复元素? [分析] 由于数组的取值在一个范围range[1,32000)之间,我们很自然想到用Bitset来处理.使用Bitset,那么1个整数可以使用1个