生成包含n个不重复整数的数组,并在0到n之间找出不包含在该数组内的那个数...

标题有点饶。相输出如下结果:

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

数组nn有9个元素,0到9之间,9不在数组nn中

======================

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

数组nn有9个元素,0到9之间,2不在数组nn中

 

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
}

 

转载于:https://my.oschina.net/u/3820046/blog/3100969

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值