2024年C C++最全【力扣刷题笔记(二)】特别技巧,模块突破(1),2024年最新2024C C++常见面试题

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

给你一个十进制数,转化成7进制数的字符串
输入:100
输出:“202” —解释:100 = 2 * 49 + 0 * 7 + 2 * 1

Java API :

return Integer.toString(num, 7);

进制转换一般利用除法和取模进行计算, 类似十进制取出每位的数。取出七进制每位的数再拼接起来就行了。

while (num != 0) {
      sb.append(num % 7); //最低位到最高位
      num /= 7;
 }

172.阶乘后的零👐

给你一个整数,求这个数的阶乘结尾有几个0;

尾部的 0 是 由 2 x 5 而来的, 把阶乘中每个数都拆成质数相乘,统计有多少个 2 和 5. 由于 2 的个数一定是远多于 5 的个数的,所有只需统计 5 的个数。 6 之前有 1 个 5 , 25 之前有 6个5【5、10、15、20、5、5】

    public int trailingZeroes(int n) {
        return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);
    }

326.3的幂👊

判断一个数,是否是3的整数次方。

两种办法:

  1. 利用对数,

log

3

n

=

m

\log_3^n = m

log3n​=m, 如果 n 是 3 的整数次方,那么m一定是整数。由换底公式:

log

3

n

=

log

10

n

log

10

3

\log_3^n = \frac{\log_{10}^n}{ \log_{10}^3}

log3n​=log103​log10n​​
2. 由于3的幂次的质因子只有3,利用3的次方的最大数, 在 int 范围 3的最大次方数是

3

19

3^{19}

319, 如果 n 是 3 的整数次方,那么一定能被这个数整除,反正亦然,注意 n 小于0 的情况直接返回。

        double tem = Math.log10(n) / Math.log10(3);
        return tem == (int)tem;

1.4 随机与采样

384.打乱数组👐

给你一个数组, 实现两个指令函数,第一个随机打乱这个数组,第二个恢复这个数组。

把原始数组保存下来,恢复的时候直接恢复。打乱数组可以用洗牌算法。即遍历数组,把位置 i 的数字和其他随机位置的数字交换。
打乱数组代码:

    public int[] shuffle() {
        int[] tem = nums.clone();
        for(int i = 0; i < tem.length; i++) {
            swap(i, r.nextInt(tem.length), tem); //位置 i 数字 和 随机位置交换
        }
        return tem;
    }

练习

168.Excel表列名称👊

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
A – 1
Z – 26
AA–27
AB–28

26进制变种, 注意这里是1-26, 不是0-25, 所有取余和相除的时候得注意

        char[] arr = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
        'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
        StringBuilder sb = new StringBuilder();
        while(columnNumber != 0) {
            int num = ((columnNumber % 26 - 1) + 26) % 26; // 余1 对应 0 , 余0 对应 25
            sb.append(arr[num]);
            columnNumber = (columnNumber - 1) / 26; // 26 对应 25。再除以 26
        }
        return sb.reverse().toString();

67.二进制求和👊

给你两个二进制数字得字符串, 计算相加后的二级制字符串

思路: 模拟。 模拟进位即。

238.除自身以外数组的乘积👐

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。

思路: 类似前缀和思想,answer[i] = 左边的积 * 右边的积

        int[] ret = new
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值