Contents

ARST打卡第301周

Algorithm

lc63_不同路径 II

思路:

暴力模拟,向下向右走,直接广度优先遍历+剪枝,每次走到终点加一次ans。

但是显然有导致很多冗余计算,可能会导致超时。

可以dp优化,每个点都来自左边或者上边,所以dp[i][j] = dp[i-1][j] + dp[i][j-1]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
impl Solution {
    pub fn unique_paths_with_obstacles(obstacle_grid: Vec<Vec<i32>>) -> i32 {
        let m = obstacle_grid.len();
        let n = obstacle_grid[0].len();
        let mut dp = vec![vec![0; n]; m];
        if obstacle_grid[0][0] == 0 {
            dp[0][0] = 1;
        }
        for i in 0..m {
            for j in 0..n {
                if obstacle_grid[i][j] == 1 {
                    continue;
                }
                if i > 0 {
                    dp[i][j] += dp[i - 1][j];
                }
                if j > 0 {
                    dp[i][j] += dp[i][j - 1];
                }
            }
        }
        dp[m - 1][n - 1]
    }
}

题解用了滚动数组,把空间复杂度又降了一个维度。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
impl Solution {
    pub fn unique_paths_with_obstacles(obstacle_grid: Vec<Vec<i32>>) -> i32 {
        let n = obstacle_grid.len();
        let m = obstacle_grid[0].len();
        let mut f = vec![0; m];
        f[0] = if obstacle_grid[0][0] == 0 { 1 } else { 0 };
        for i in 0..n {
            for j in 0..m {
                if obstacle_grid[i][j] == 1 {
                    f[j] = 0;
                } else if j > 0 && obstacle_grid[i][j - 1] == 0 {
                    f[j] += f[j - 1];
                }
            }
        }
        f[m - 1]
    }
}

Review

为什么你应该从个人数据中获利?【TED演讲】

生产队进化成私有制企业,从而让大家从贫困走向富裕。

进而暗示,数据从大公司垄断,到个人私有,也会创造巨大的经济效应。

这里其实和web3的数据私有化有异曲同工之妙。定义新的生产关系,创造新的经济效应。

没有数据中间商赚差价,直接每个人的数据变成自己的钱。

希望未来 AI + web3 私人数据能让大多数人摆脱贫困,都能有机会享受科技,享受生活。

Tips

三个月成为「meme 届币安」,关于 Moonshot 你不知道的那些事

Moonshot 的成功证明: 简单易用从来都不是伪命题,meme这种争分抢秒的玩法,只要做到极致简单易用数据及时。 就算被收3-5%的手续费,也依然有大量用户。

Share

Kamino介绍

https://x.com/wolfdan666666/status/1888619080279883850