王清欢Randy 王清欢Randy
首页
  • 编程语言

    • C/C++ 学习笔记
    • Golang 学习笔记
  • 算法分析

    • LeetCode 刷题笔记
  • 操作系统

    • Linux 基础
    • Vim 实用技巧
    • Shell 脚本编程
    • GDB 学习笔记
  • 开发工具

    • Git 学习笔记
  • 分布式理论

    • 共识算法
    • 分布式事务
  • 数据库内核

    • PostgreSQL
    • Postgres-XL
  • hidb
  • pgproxy
  • 实用技巧
  • 学习方法
  • 资源分享
GitHub (opens new window)
首页
  • 编程语言

    • C/C++ 学习笔记
    • Golang 学习笔记
  • 算法分析

    • LeetCode 刷题笔记
  • 操作系统

    • Linux 基础
    • Vim 实用技巧
    • Shell 脚本编程
    • GDB 学习笔记
  • 开发工具

    • Git 学习笔记
  • 分布式理论

    • 共识算法
    • 分布式事务
  • 数据库内核

    • PostgreSQL
    • Postgres-XL
  • hidb
  • pgproxy
  • 实用技巧
  • 学习方法
  • 资源分享
GitHub (opens new window)
  • 基础算法

    • 双指针

      • 双指针基础
      • 碰撞指针
      • 快慢指针
      • 滑动窗口
    • 二分查找

      • 基础应用
      • 边界收缩
      • 局部有序
    • 排序算法

      • 01八大排序
      • 02快速排序
      • 03归并排序
      • 04桶排序
      • 05堆排序
    • 优先搜索

      • 01递归
      • 02网格结构深度优先搜索
      • 03树结构深度优先搜索
      • 04图结构深度优先搜索
      • 05网格结构广度优先搜索
      • 06树结构广度优先搜索
      • 07图结构广度优先搜索
    • 回溯算法

      • 01递归
      • 02 子集问题
      • 03 全排列问题
      • 04 组合问题
      • 05 回溯搜索问题
  • 基础数据结构

    • 线性表与哈希表

      • 01数组
      • 02栈和队列
      • 03单调栈
      • 04优先队列
      • 05双端队列
      • 06哈希表
      • 07多重集合
      • 08前缀和
      • 09数据结构设计
    • 字符串

      • 01字符串比较
      • 02回文字符串
      • 03字符串匹配
      • 04字符串算术表达式
    • 单链表

      • 01链表基础操作
      • 02链表遍历
    • 二叉树

      • 01二叉树的属性
      • 02二叉树的操作
      • 03层次遍历
      • 04前中后序遍历
      • 05二叉搜索树的属性
      • 06二叉搜索树的操作
      • 07字典树
      • 08二叉搜索树BST
    • 图

      • 01二分图
      • 02拓扑排序
      • 03并查集
      • 04最小生成树
      • 05最短路径
  • 进阶算法

    • 贪心算法

      • 01跳跃游戏
      • 02分配问题
      • 03区间问题
    • 分治策略

    • 动态规划

      • 01一维动态规划
      • 02二维动态规划
      • 03分割型动态规划
      • 04子序列问题
      • 05背包问题
      • 06字符串编辑问题
      • 07股票交易问题
  • 其他内容

    • 数学问题

      • 01公倍数与公因数
      • 02质数问题
      • 03进制转换问题
        • 03 进制转换问题
          • 504 七进制数
          • 168 Excel表列名称
          • 202 快乐数
      • 04数字字符串求和问题
      • 05众数问题
      • 06中位数问题
      • 07数字处理问题
      • 08随机数问题
    • 位运算

      • 01位运算基础
      • 02妙用异或运算
      • 03二进制特性
  • LeetCode刷题笔记
  • 其他内容
  • 数学问题
王清欢
2023-03-24
目录

03进制转换问题

# 03 进制转换问题

# 504 七进制数 (opens new window)

给定一个十进制整数,求它在七进制下的表示。

输入一个整数,输出一个字符串,表示其七进制。

输入: num = 100
输出: "202"
解释:100 的七进制表示法来源于 100 = 2 * 49 + 0 * 7 + 2 * 1。

解析:

​ 进制转换类型的题,通常是利用除法和取模(mod)来进行计算,同时也要注意一些细节,如负数和零。如果输出是数字类型而非字符串,则也需要考虑是否会超出整数上下界。

class Solution {
public:
    string convertToBase7(int num) {
        if(num == 0) return "0";
        bool isNegatibe = num < 0;
        num = abs(num);
        string ans;
        while(num){
            int a = num / 7;
            int b = num % 7;
            ans = to_string(b) + ans;
            num = a;
        }
        if(isNegatibe){
            return "-"+ans;
        }
        return ans;
    }
};

# 168 Excel表列名称 (opens new window)

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。

输入一个整数,输出一个字符串表示Excel 表中相对应的列名称

输入:columnNumber = 28
输出:"AB"

解析:

​ 本题是进制转换题型的变种题,和504七进制转换题十分相似,可以视为26进制转换,但是需要注意的是输入的整数是从 1 开始而不是 0,所以要将输入减1。

class Solution {
public:
    string convertToTitle(int columnNumber) {
        string ans;
        while(columnNumber){
            int a = (columnNumber-1) / 26;
            int b = (columnNumber-1) % 26;
            columnNumber = a;
            char c = b + 'A';
            ans = c + ans;
        }
        return ans;
    }
};

# 202 快乐数 (opens new window)

输入一个整数,判断它是否是快乐数,快乐数是指将该数替换为它每个位置上的数字的平方和,如果该数进过上述过程最终变为 1,则称为快乐数

输入:19
输出:true
解释:
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

解析:

​ 本题有两个需要注意的地方,和504七进制转换题一样要能够转换出十进制每一位上的数值获取下一个数值。另一个点是,不是快乐数的数可能是 无限循环 但始终变不到 1,看到无限循环就能想到成环,而环路检测最常用的方法就是弗洛伊德判圈算法,可以使用快慢指针实现。

class Solution {
public:
    int getNext(int num){
        int nextNum = 0;
        while(num){
            int b = num % 10;
            num = num / 10;
            nextNum += b*b;
        }
        return nextNum;
    }

    bool isHappy(int n) {
        int slow = n;
        int fast = getNext(n);
        while(fast!=1 && fast!=slow){
            slow = getNext(slow);
            fast = getNext(getNext(fast));
        }
        return fast == 1;
    }
};
上次更新: 2023/11/19, 12:55:48
02质数问题
04数字字符串求和问题

← 02质数问题 04数字字符串求和问题→

Theme by Vdoing | Copyright © 2023-2024 Wang Qinghuan | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式