【Leetcode】1894. Find the Student that Will Replace the Chalk

题目地址:

https://leetcode.com/problems/find-the-student-that-will-replace-the-chalk/

给定一个长 n n n的正整数数组 A A A,和一个正整数 k k k,从 A [ 0 ] A[0] A[0]开始,每次让 k k k减去当前的 A [ i ] A[i] A[i],走到界外的话就回到 0 0 0重新继续操作。问第一次减到负数的位置的下标。

先求一下 s = ∑ A s=\sum A s=A,这样最后一轮里 k k k就变成了 k m o d    s k\mod s kmods,然后遍历 A A A,找到第一次 k k k不够了的时候的下标。代码如下:

public class Solution {
    
    
    public int chalkReplacer(int[] chalk, int k) {
    
    
        long sum = 0;
        for (int x : chalk) {
    
    
            sum += x;
        }
        
        k %= sum;
        for (int i = 0; i < chalk.length; i++) {
    
    
            if (chalk[i] > k) {
    
    
                return i;
            }
            
            k -= chalk[i];
        }
        
        return -1;
    }
}

时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)

Guess you like

Origin blog.csdn.net/qq_46105170/article/details/120426358