生成包含n個不重複整數的數組,並在0到n之間找出不包含在該數組內的那個數

標題有點饒。相輸出以下結果:java

nn:[3, 5, 8, 4, 7, 2, 0, 1, 6]
findnum(nn):9數組

數組nn有9個元素,0到9之間,9不在數組nn中dom

======================code

nn:[5, 7, 1, 8, 4, 9, 0, 6, 3]
findnum(nn):2class

數組nn有9個元素,0到9之間,2不在數組nn中import

 

import java.util.Random

fun main(){
    val n=9
    val nn=random1(n)
    println(nn.toList())
    println(findnum(nn))
}

fun findnum(n: IntArray): Int {
    (0..n.size).forEach { j ->
        if (j in n) {}
        else{return j}
    }
    return -1 //若是返回-1,則會形成imageViews數組越界
}


//生成nn個不重複的逆序數爲偶數的數字
fun random1(nn: Int): IntArray {
    var ran = IntArray(nn)
    while (!iso(ran)) {
        ran = random_num(nn)
    }
    return ran
}

//生成nn個不重複數
fun random_num(nn: Int): IntArray {
    val r = IntArray(nn)
    val random = Random()
    var i = 0
    while (i < nn) {
        r[i] = random.nextInt(nn+1)
        for (j in 0 until i) {
            while (r[i] == r[j]) {
                i--
                break
            }
        }
        ++i
    }

    return r
}

//判斷逆序數是否爲偶數
fun iso(num: IntArray): Boolean {
    var sum = 0
    val t = num.size
    (0..t - 2).forEach { i->
        (i until t).forEach {j->
            if (num[i] > num[j]) {
                sum++
            }
        }
    }
    return sum % 2 == 0 && sum != 0
}
相關文章
相關標籤/搜索