您的位置:首页 > 其它

【九度OJ合集】P1359-1414

2014-04-22 10:15 417 查看
p1402

import java.io.BufferedInputStream;
import java.io.StreamTokenizer;
import java.util.BitSet;

public class Exercise1402 {
public static void main(String[] args) throws Exception {
StreamTokenizer sc = new StreamTokenizer(new BufferedInputStream(
System.in));
while (sc.nextToken() != StreamTokenizer.TT_EOF) {
int n = (int) sc.nval;

BitSet bitSet = new BitSet(1000001);
BitSet flag = new BitSet(1000001);
int k = 0;
for (int i = 0; i < n; i++) {
sc.nextToken();

int j = (int) sc.nval;
if (!flag.get(j)) {
if (bitSet.get(j)) {
flag.set(j);
k--;
} else {
bitSet.set(j);
k++;
}

}

}
System.out.println(k);

if (k != 0) {
int p = 0;
StringBuilder sb = new StringBuilder();
for (int i = 1; i < 1000001 && p < k; i++)
if (bitSet.get(i) && !flag.get(i)) {
if (p == 0)
sb.append(i);
else
sb.append(" " + i);
p++;

}
System.out.println(sb);
}

}
}
}


位操作,stringbuilder线程不安全,效率更高
import java.io.BufferedInputStream;
import java.io.StreamTokenizer;

public class Exercise1402_2 {
public static void main(String[] args) throws Exception {
StreamTokenizer sc = new StreamTokenizer(new BufferedInputStream(
System.in));
while (sc.nextToken() != StreamTokenizer.TT_EOF) {
int n = (int) sc.nval;
StringBuffer sb=new StringBuffer();

int[] a=new int[1000001];
int k=0;
for(int i=0;i<n;i++)
{

sc.nextToken();
int j=(int) sc.nval;
a[j]=a[j]+1;
if(a[j]==1)
k++;
if(a[j]==2)
k--;

}
System.out.println(k);
if(k!=0)
{
int j=0;
for(int i=1;i<a.length&&j<=k;i++)

if(a[i]==1)
{
if(j==0)
sb.append(i);
else
sb.append(" "+i);
j++;
}

System.out.println(sb);
}

}
}
}


数组模拟
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: