【算法题】桃花顺检验 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