paizaラーニングレベルアップ問題集の重複の削除をやってみました。
問題
方針
問題文中にある通り、数列を配列に格納し、並び替える操作や重複を削除する操作を考えて解いてみましょう。
- 数列$A$を、$A=\{1,3,5,1,2,3,6,6,5,1,4\}$とします
- 数列$A$を昇順ソートします
- $i=1,2,\dots,\#(A)$について
- $i=1$または$A_i\neq A_{i-1}$(昇順ソートしているので$A_i>A_{i-1}$)ならば
- $A_i$を出力します
- $i=1$または$A_i\neq A_{i-1}$(昇順ソートしているので$A_i>A_{i-1}$)ならば
C
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b) {
int x = *(int*) a;
int y = *(int*) b;
if (x < y) return -1;
if (x > y) return 1;
return 0;
}
int main() {
int A[] = { 1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4 };
int n = (int) (sizeof(A) / sizeof(A[0]));
qsort(A, n, sizeof(A[0]), cmp);
for (int i = 0; i < n; i++) {
if (i > 0 && A[i] == A[i-1]) continue;
printf("%d\n", A[i]);
}
return 0;
}
C++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> A = { 1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4 };
sort(A.begin(), A.end());
for(int i = 0; i < (int) A.size(); i++) {
if (i > 0 && A[i] == A[i-1]) continue;
cout << A[i] << endl;
}
return 0;
}
C#
using System;
class Program
{
public static void Main()
{
int[] A = { 1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4 };
Array.Sort(A);
for (int i = 0; i < A.Length; i++) {
if (i > 0 && A[i] == A[i-1]) continue;
Console.WriteLine(A[i]);
}
}
}
Go
package main
import (
"fmt"
"sort"
)
func main() {
A := []int{ 1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4 }
sort.Ints(A)
for i := 0; i < len(A); i++ {
if i > 0 && A[i] == A[i-1] {
continue
}
fmt.Println(A[i])
}
}
Java
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] A = { 1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4 };
Arrays.sort(A);
for (int i = 0; i < A.length; i++) {
if (i > 0 && A[i] == A[i-1]) continue;
System.out.println(A[i]);
}
}
}
JavaScript
const A = [ 1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4 ];
A.sort();
for (var i = 0; i < A.length; i++) {
if (i > 0 && A[i] === A[i-1]) continue;
console.log(A[i]);
}
Kotlin
fun main() {
val A = arrayOf(1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4);
A.sort()
for (i in 0 until A.size) {
if (i > 0 && A[i] == A[i-1]) continue
println(A[i])
}
}
PHP
<?php
$A = [1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4];
sort($A);
for ($i = 0; $i < count($A); $i++) {
if ($i > 0 && $A[$i] === $A[$i-1]) continue;
echo $A[$i], PHP_EOL;
}
?>
Perl
my @A = (1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4);
@A = sort(@A);
for (my $i = 0; $i < scalar(@A); $i++) {
if ($i == 0 || $A[$i] != $A[$i-1]) {
print "$A[$i]$/";
}
}
Python3
A = [1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4]
A.sort()
for i in range(len(A)):
if i > 0 and A[i] == A[i-1]: continue
print(A[i])
Ruby
A = [1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4]
A.sort!()
A.size.times do |i|
if i > 0 && A[i] == A[i-1]
next
end
p A[i]
end
Scala
object Main extends App{
val A = Array(1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4)
val B = A.sorted
for (i <- 0 until B.size)
if (i == 0 || B(i) != B(i-1))
println(B(i))
}
Swift
var A = [1, 3, 5, 1, 2, 3, 6, 6, 5, 1, 4]
A.sort()
for i in 0..<A.count {
if i > 0 && A[i] == A[i-1] {
continue
}
print(A[i])
}