【算法题】桃花顺检验 PermCheck - Check whether one array is a permutation

这也是常见的一个算法题,是在Codility上出现的,英文原文如下:

A non-empty array A consisting of N integers is given.

A permutation is a sequence containing each element from 1 to N once, and only once.

For example, array A such that:

    A[0] = 4
    A[1] = 1
    A[2] = 3
    A[3] = 2
is a permutation, but array A such that:

    A[0] = 4
    A[1] = 1
    A[2] = 3
is not a permutation, because value 2 is missing.

The goal is to check whether array A is a permutation.

Write a function:

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

that, given an array A, returns 1 if array A is a permutation and 0 if it is not.

For example, given array A such that:

    A[0] = 4
    A[1] = 1
    A[2] = 3
    A[3] = 2
the function should return 1.

Given array A such that:

    A[0] = 4
    A[1] = 1
    A[2] = 3
the function should return 0.

Write an efficient algorithm for the following assumptions:

N is an integer within the range [1..100,000];
each element of array A is an integer within the range [1..1,000,000,000].

 

这个题目的解题思路其实很简单,是这样的:

先对数组进行排序,用Array.sort()方法,这样数组从A[0].到A[N-1]的值,就是从小到大排序好的,所以应该满足A[i] = i + 1

如果不满足,说明这个数组不是permutation

 

posted on 2023-02-16 17:04  新西兰程序员  阅读(21)  评论(0编辑  收藏  举报