LeetCode in Kotlin

3927. Minimize Array Sum Using Divisible Replacements

Medium

You are given an integer array nums.

You can perform the following operation any number of times:

Return the minimum possible sum of the array after performing any number of operations.

Example 1:

Input: nums = [3,6,2]

Output: 7

Explanation:

Example 2:

Input: nums = [4,2,8,3]

Output: 9

Explanation:

Example 3:

Input: nums = [7,5,9]

Output: 21

Explanation:

Constraints:

Solution

class Solution {
    fun minArraySum(nums: IntArray): Long {
        var max = 0
        var sum: Long = 0
        for (num in nums) {
            if (num == 1) {
                return nums.size.toLong()
            }
            if (num > max) {
                max = num
            }
        }
        val min = IntArray(max + 1)
        for (num in nums) {
            min[num] = num
        }
        for (num in nums) {
            if (min[num] < num) {
                continue
            }
            var i = num
            while (i <= max) {
                if (num < min[i]) {
                    min[i] = num
                }
                i += num
            }
        }
        for (num in nums) {
            sum += min[num].toLong()
        }
        return sum
    }
}