leetcode 2154

2154: 将找到的值乘以2

返回不在 nums 中的最小的 original*2^k,其中 k 是非负整数。

思路1:枚举

复制代码
class Solution {
public:
    int findFinalValue(vector<int>& nums, int original) {
        unordered_set<int> st(nums.begin(), nums.end());
        while (st.contains(original)){
            original *= 2;
        }          
        return original;
    }
};

思路2:只记录所有可能值

哈希集合记录的元素可以更少,只需要记录符合 original*2^k 的元素。

设 x=nums[i],如果 x=original*2^k,那么:

  • x 是 original 的倍数。

  • x/original 是2的幂。

    class Solution {
    public:
    int findFinalValue(vector<int>& nums, int original) {
    unordered_set<int> st;
    for(int x :nums){
    int k=x/original;
    if(x%original==0 && (k&(k-1))==0){
    st.insert(x);
    }
    }
    while(st.contains(original)){
    original*=2;
    }

    复制代码
          return original;
      }

    };

相关推荐
多米Domi01118 小时前
0x3f 第49天 面向实习的八股背诵第六天 过了一遍JVM的知识点,看了相关视频讲解JVM内存,垃圾清理,买了plus,稍微看了点确定一下方向
jvm·数据结构·python·算法·leetcode
A_nanda1 天前
c# MOdbus rto读写串口,如何不相互影响
算法·c#·多线程
代码雕刻家1 天前
2.4.蓝桥杯-分巧克力
算法·蓝桥杯
Ulyanov1 天前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
智者知已应修善业1 天前
【查找字符最大下标以*符号分割以**结束】2024-12-24
c语言·c++·经验分享·笔记·算法
91刘仁德1 天前
c++类和对象(下)
c语言·jvm·c++·经验分享·笔记·算法
diediedei1 天前
模板编译期类型检查
开发语言·c++·算法
阿杰学AI1 天前
AI核心知识78——大语言模型之CLM(简洁且通俗易懂版)
人工智能·算法·ai·语言模型·rag·clm·语境化语言模型
mmz12071 天前
分治算法(c++)
c++·算法
睡一觉就好了。1 天前
快速排序——霍尔排序,前后指针排序,非递归排序
数据结构·算法·排序算法