pursue wind pursue wind
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
首页
Java
Python
数据库
框架
Linux
中间件
前端
计算机基础
DevOps
项目
面试
书
关于
归档
MacOS🤣 (opens new window)
GitHub (opens new window)
  • 技术面试题篇

  • 面试准备篇

  • 技术面试题自测篇

  • 练级攻略篇

  • 工作篇

  • 面经篇

  • 笑傲Java面试

  • LeetCode

    • xxx
  • 面试
  • LeetCode
pursuewind
2023-02-10

xxx

package com.sensetime.iag.v2x.device.mec.init


/**
 * 示例 1:
 *
 * 输入:n = 2, rollMax = [1,1,2,2,2,3]
 * 输出:34
 * 解释:我们掷 2 次骰子,如果没有约束的话,共有 6 * 6 = 36 种可能的组合。但是根据 rollMax 数组,数字 1 和 2 最多连续出现一次,所以不会出现序列 (1,1) 和 (2,2)。因此,最终答案是 36-2 = 34。
 * 示例 2:
 *
 * 输入:n = 2, rollMax = [1,1,1,1,1,1]
 * 输出:30
 * 示例 3:
 *
 * n = 3
 * 11x, x11
 * 6
 * 5
 *
 * 输入:n = 4, rollMax = [1,1,1,2,2,3] = 1296
 * 11xx,x11x,xx11
 * 36 25 25
 * 22xx,x22x,xx22
 * 6*6 , 5*5 +5 , 5*5
 * 36 26 26
 *
 * 6*6  36+25+25 86*3 =258 22 280
 * 5*5 11*2
 * 5*5 1
 *
 * x444 6
 * 444x 5
 *
 * 11
 * 11
 * 6666
 *
 * x444x
 *
 * n =5
 * 11xxx, x11xx,xx11x,xxx11
 * 6*6*6
 * 5*5*5
 * 5*5*5
 * 5*5*5
 *
 * 22x,x22,33x,x33,444,555
 */
class Solution {
    fun dieSimulator(n: Int, rollMax: IntArray): Int {
        val all = Math.pow(6.0, n.toDouble()).toLong()
        val modVal = Math.pow(10.0, 9.0) + 7
        // n = 3, (1,1,x) x11, 22x x22 , 33x x33, 444,555
        // n = 4, 11xx,x11x,xx11, 22xx,x22x,xx22,
        // n = 5, 11xxx, x11xx, xx11x, xxx11
        var remove = 0L;

        for ((i, it) in rollMax.withIndex()) {
            val j = i + 1

            if (it >= n) {
                continue
            }

            if (it == n - 1) {
                remove += 1
                continue
            }

            for (k in 0..n - it - 1) {
                val p = if (k == 0) 6 else 5
                val r2 = Math.pow(p.toDouble(), (n - it - 1).toDouble()).toLong()
                remove += r2
            }
        }

        return if ((all - remove) < Int.MAX_VALUE) (all - remove).toInt() else ((all - remove) % modVal).toInt()
    }
}

fun main() {
    println(Solution().dieSimulator(4, arrayOf(1, 1, 1, 2, 2, 3).toIntArray()))
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
Last Updated: 2023/02/10, 17:02:00
4-13 并发部分的通关Boss: 生成、发放大量红包并控制资金流速

← 4-13 并发部分的通关Boss: 生成、发放大量红包并控制资金流速

Theme by Vdoing | Copyright © 2019-2023 pursue-wind | 粤ICP备2022093130号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
  • 飙升榜
  • 新歌榜
  • 云音乐民谣榜
  • 美国Billboard榜
  • UK排行榜周榜
  • 网络DJ