LoginSignup
0
0

More than 1 year has passed since last update.

[100%] PermCheck (codility lessons)

Last updated at Posted at 2020-12-19

Painless

PermCheck

配列Aが順列であるかどうかを確認します。
image.png

タスク説明

N個の整数で構成される空でない配列Aが与えられます。

順列は、1からNまでの各要素を1回だけ含むシーケンスです。

たとえば、次のような配列A:

     A [0] = 4
     A [1] = 1
     A [2] = 3
     A [3] = 2

は順列ですが、配列Aは次のようになります。

     A [0] = 4
     A [1] = 1
     A [2] = 3

値2が欠落しているため、は順列ではありません。

目標は、配列Aが順列であるかどうかを確認することです。

関数を書く:

class solution {public int solution(int [] A); }

つまり、配列Aが与えられると、配列Aが順列である場合は1を返し、そうでない場合は0を返します。

たとえば、次のような配列Aが与えられます。

     A [0] = 4
     A [1] = 1
     A [2] = 3
     A [3] = 2

関数は1を返す必要があります。

次のような配列Aが与えられます。

     A [0] = 4
     A [1] = 1
     A [2] = 3

関数は0を返す必要があります。

次の仮定のための効率的なアルゴリズムを記述します。

  • Nは[1..100,000]の範囲内の整数です。
  • 配列Aの各要素は、[1..1,000,000,000]の範囲内の整数です。

解く

image.png

Program

PermCheckSolution.java

PermCheckSolution.java
    public int solution(int[] A) {
        java.util.Arrays.sort(A);
        for (int i = 0; i < A.length; i++) {
            if (A[i] == i + 1) continue;
            else return 0;
        }

        return 1;
    }

Detected time complexity:

O(N) or O(N * log(N))

jUnit

PermCheckSolutionTest.java

Report

Candidate Report: trainingVGBR4Z-S47


See also: CodilityのLessonsをすべて解く(更新中)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0