原题链接5993. 将找到的值乘以 2
解题思路
感恩出题人为我这种菜狗准备了这道题,让第一次参加力扣周赛的我有了一丝丝自信。
闲话不多说,让我们来看看这题吧。
题目需要我们在original不断更新的同时在数组里搜寻它是否依然存在,由于本题的original >= 1,因此每次更新(将original * 2)后的original值是不断增大的,我们可以利用这个性质,先将nums数组排好序,这样每次新的original值只需要在后面继续查找就好了,这样仅需遍历nums数组一次就可以得出答案啦。
时间复杂度
由于只需要遍历一次数组,时间复杂度自然也就是O(n)啦。
代码
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;
}
};