Contents

ARST打卡第154周[154/521]

Algorithm

lc479_最大回文数乘积

思路

感觉这里要用到大数相乘的编码,就是用string来做乘法运算,并且还要结合乘积为最大回文数的规律, 这里不是很好找思路

有一个可能的赛场思路是,通过大数相乘打表,打出1-8的大数相乘的结果,但是还有有点麻烦的

看一下答案是怎么解决这个问题的

作者:LeetCode-Solution 链接:https://leetcode-cn.com/problems/largest-palindrome-product/solution/zui-da-hui-wen-shu-cheng-ji-by-leetcode-rcihq/

代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
    int largestPalindrome(int n) {
        if (n == 1) {
            return 9;
        }
        int upper = pow(10, n) - 1;
        for (int left = upper;; --left) { // 枚举回文数的左半部分
            long p = left;
            for (int x = left; x > 0; x /= 10) {
                p = p * 10 + x % 10; // 翻转左半部分到其自身末尾,构造回文数 p
            }
            for (long x = upper; x * x >= p; --x) {
                if (p % x == 0) { // x 是 p 的因子
                    return p % 1337;
                }
            }
        }
    }
};

Review

What are the differences between bthreads and goroutines?

不同的技术内容解决的问题不同,每个技术的应用都要和自己的使用场景相结合,当然如果有十分类似的场景的话

可以使用业界比较流行得到过大项目验证的解决方案,这样才能得到好的效果

bthread和golang中goroutine都是在大概比较相近的时间产生的技术实现,达到的效果也比较相近

但是对于我个人而言的话,就是bthread可能比goroutine稍微需要更多一点时间上手,而且C代码可能还需要对于命名冲突做一些适配,所以goroutine还是很友好的

当然在不同的使用场景,用不同的技术

Tips

一个C系程序员的Rust初体验

使用的工具,也应该与时俱进的进化

因此,我也放弃了几十年前的开源代码C代码,ftp,nfs,samba,而是去做golang相关的存储工作了

Share

The commit failed because it seems to introduce trailing whitespace