菜狗题解:力扣第278场周赛第一题

173 阅读1分钟

原题链接5993. 将找到的值乘以 2

解题思路

感恩出题人为我这种菜狗准备了这道题,让第一次参加力扣周赛的我有了一丝丝自信。 闲话不多说,让我们来看看这题吧。 题目需要我们在original不断更新的同时在数组里搜寻它是否依然存在,由于本题的original >= 1,因此每次更新(将original * 2)后的original值是不断增大的,我们可以利用这个性质,先将nums数组排好序,这样每次新的original值只需要在后面继续查找就好了,这样仅需遍历nums数组一次就可以得出答案啦。

时间复杂度

由于只需要遍历一次数组,时间复杂度自然也就是O(n)啦。

278-1.png

代码

class Solution {
public:
    int findFinalValue(vector<int>& nums, int original) {
        sort(nums.begin(), nums.end());
        
        for (int i = 0; i < nums.size(); i++)
        {
            if(nums[i] == original) original = original * 2;
        }
        return original;
    }
};