1. 排序--明明的随机数
1.1 描述
明明想在学校中请一些同学做一项问卷调查。为了实验的客观性,他先用计算机生成了n个1~1000之间的随机整数(n<=100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
1.1.1 输入描述
第一行为1个正整数,表示所生成的随机数的个数n。第二行有n个用空格隔开的正整数,为所产生的随机数。
1.1.2 输出描述
第一行为1个正整m,表示不相同的随机数的个数。第二行为m个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
1.1.3 输入样例
10
20 40 32 67 40 20 89 300 400 15
1.1.4输出样例
8
15 20 32 40 67 89 300 400
1.2 代码
1.2.1 go
package main
import (
"fmt"
"strings"
"strconv"
"bufio"
"os"
)
func main() {
// please write your code here
var numOfRandom int
var strOfRandom string
fmt.Scanln(&numOfRandom)
//fmt.Scanln(&strOfRandom)
inputReader := bufio.NewReader(os.Stdin)
strOfRandom, _ = inputReader.ReadString('
')
strOfRandom=strings.TrimSpace(strOfRandom)
//fmt.Println(strOfRandom)
strArrofRandom:=strings.Split(strOfRandom," ")
if len(strArrofRandom)!=numOfRandom{
//panic("123")
}
// fmt.Println(strArrofRandom)
intArrofRandom:=make([]int,0)
for _,v:=range strArrofRandom{
if v==""{
continue
}
//strings.TrimS(v)
if val,err:=strconv.Atoi(v);err==nil{
isExist:=false
for _,vv:=range intArrofRandom{
if val==vv{
isExist=true
}
}
if !isExist{
intArrofRandom=append(intArrofRandom,val)
}
}
}
for i:=0;i<len(intArrofRandom);i++{
for j:=i+1;j<len(intArrofRandom);j++{
if intArrofRandom[j]<intArrofRandom[i]{
intArrofRandom[i],intArrofRandom[j]=intArrofRandom[j],intArrofRandom[i]
}
}
}
fmt.Println(len(intArrofRandom))
for i,v:=range intArrofRandom{
if i==len(intArrofRandom)-1{
fmt.Print(v)
break
}
fmt.Print(v," ")
}
//fmt.Println(strings.Join(intArrofRandom," "))
}
1.2.1 java
import java.util.*;
public class RandomNumbers {
public static void main(String[] args) {
// TODO Auto-generated method stub
//System.out.println("answer");
Scanner scan = new Scanner(System.in);
String line;
int numOfRandom=-1;
while (scan.hasNextLine()) {
line = scan.nextLine().trim();
// please write your code here
if(numOfRandom==-1){
numOfRandom=Integer.parseInt(line);
}else{
String[] arraryOfRandom=line.split("\s+");
List<String> listString=new LinkedList<String>();
for(String s:arraryOfRandom){
if(!listString.contains(s)){
listString.add(s);
}
}
String[] newarrofRandom=listString.toArray(new String[listString.size()]);
int[] newArrOfInt=new int[newarrofRandom.length];
System.out.println(newArrOfInt.length);
for(int i=0;i<newarrofRandom.length;i++){
newArrOfInt[i]=Integer.parseInt(newarrofRandom[i]);
}
Arrays.sort(newArrOfInt);
for(int s:newArrOfInt){
System.out.printf("%d ",s);
}
break;
}
// System.out.println("answer");
}
scan.close();
}
}
1.2.1 python
import sys
if __name__=="__main__":
numOfRandom=None
for line in sys.stdin:
# print(line) # please replace your code here
newLine=line.strip()
if numOfRandom==None:
numOfRandom=int(newLine)
else:
numList=newLine.split(" ")
numList=list(set(numList))
if "" in numList:
numList.remove("")
newNumList=[]
for v in numList:
newNumList.append(int(v.strip()))
newNumList.sort()
out=" ".join(str(i) for i in newNumList)
print(len(newNumList))
print(out)
#print("44 66")
break
1.2 总结
不同的语言,实现思路是不一样的;