当前位置: 首页 > news >正文

LeetCode 1780: Check if Number is a Sum of Powers of Three(2025/3/4 每日一题)

标题:1780. Check if Number is a Sum of Powers of Three

题目:

例:

Constraints: 1<=n<=1e7

解题思路:

1. 回溯法:看了下最大n是10的7次方,3的14.67次方。数据量可以支持回溯法来计算。这个没什么好解释的,就一个一个试呗,直接上代码:

class Solution {
public:
    bool isPower(int n, int idx, int maxPower) {
        if (n == 0) return true;
        if (n < 0) return false;
        for(int i = idx; i <= maxPower; i++) {
            if (isPower(n-pow(3, i), i+1, maxPower)){
                return true;
            }
        }
        return false;
    }
    bool checkPowersOfThree(int n) {
        int maxPower = (int)(log(n) / log(3));
        return isPower(n, 0, maxPower);
    }
};

测试也能过,但时间和空间惨不忍睹,是可忍孰不可忍,叔可忍婶也不可忍。。。于是开辟新思路。

2. 数学方法:

一个数是各种以3为底不同幂加和的话,可以将数字转为3进制的数字。则每一位可能是0,1,2。如果是0和1,都符合题意,如果有一位是2,则返回false。例:

12 转成 三进制数为 110 = pow(3, 2) + pow(3, 1) + 0; 则返回true;

21 转成三进制数为 210 = 2* pow(3, 2) + pow(3, 1) + 0 则返回false;

代码为:

class Solution {
public:
    bool checkPowersOfThree(int n) {
        while (n > 0) {
            if ( n % 3 == 2) return false;
            n /= 3;
        }
        return true;
    }
};

时间复杂度 O(logN), 空间复杂度O(1)。

这个结果舒服了哈哈……

http://www.dtcms.com/a/50306.html

相关文章:

  • 仿12306项目(4)
  • Rust语言基础知识详解【七】
  • 【Unity3D】Unity混淆工具Obfuscator使用
  • BS架构(笔记整理)
  • 网络安全rt是什么意思
  • 【C++】ImGui:VSCode下的无依赖轻量GUI开发
  • AI应用测试:遇到类ChatGPT的流式接口要如何压测?
  • rust笔记11:虚拟方法表VTable 和 dyn
  • LC109. 有序链表转换平衡二叉搜索树
  • 【操作系统】设备管理
  • 多机多卡训练和单机多卡训练速度对比
  • VTP协议故障排除——三层交换机
  • MySQL零基础教程15—简单的表连接(join)
  • Windows系统还原详解
  • 51单片机使用DS18B20温度传感器
  • day27 第八章 贪心算法 part01
  • 深度学习R8周:RNN实现阿尔兹海默症(pytorch)
  • 补丁供应链案例:CVE-2024-7254. Protobuf. Google
  • FastGPT 引申:知识库辅助开发(代码符号自动提取与文件匹配工具详解)
  • FastGPT 引申:如何基于 LLM 判断知识库的好坏
  • cesium+vue3自定义HTML实体弹窗、加高德路网、防实体漂浮、让用户画圆、鹰眼
  • 51c自动驾驶~合集53
  • 从建筑设计到施工工具:软件体系结构与框架的协同之道
  • el-input 设置类型为number时,输入中文后光标会上移,并且会出现上下箭头
  • RK3568平台(GPIO篇)libgpiod的使用
  • 为AI聊天工具添加一个知识系统 之133 详细设计之74通用编程语言 之4 架构及其核心
  • AI学习笔记:LM studio大模型加载参数说明
  • Hutool一个类型转换工具类 `Convert`,
  • Redis——缓存穿透、击穿、雪崩
  • 力扣-动态规划-115 不同子序列