Contents

ARST打卡第156周[156/521]

Algorithm

lc1305_两棵二叉搜索树中的所有元素

感觉这题如果用goroutines的管道(缓冲为1)向主线程输送数据,应该很好做

就是一个生成器一样的模型,但是C++的话,应该可以先记录,然后控制返回一个的方式进行(之前远算的笔试好像考过)

比较暴力的方法就是直接中序遍历存在链表里面,然后另一个再加入插入,最后返回一个数组

结果真是这个最暴力的方式…醉了,这也定级为中等

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Solution {
    void inorder(TreeNode *node, vector<int> &res) {
        if (node) {
            inorder(node->left, res);
            res.push_back(node->val);
            inorder(node->right, res);
        }
    }

public:
    vector<int> getAllElements(TreeNode *root1, TreeNode *root2) {
        vector<int> nums1, nums2;
        inorder(root1, nums1);
        inorder(root2, nums2);

        vector<int> merged;
        auto p1 = nums1.begin(), p2 = nums2.begin();
        while (true) {
            if (p1 == nums1.end()) {
                merged.insert(merged.end(), p2, nums2.end());
                break;
            }
            if (p2 == nums2.end()) {
                merged.insert(merged.end(), p1, nums1.end());
                break;
            }
            if (*p1 < *p2) {
                merged.push_back(*p1++);
            } else {
                merged.push_back(*p2++);
            }
        }
        return merged;
    }
};

Review

【TED演讲】我们可以开始打赢与癌症的战争

在站斗的时候,要清楚对手的位置,所以在和癌细胞战斗的时候,也要搞清楚癌细胞的位置,这样才能对指定位置处理

Tips

虚拟机设置静态ip

Share

折腾goland的配置,学习go path,go module的一些知识

goland的go配置

go root : wsl中的/usr/local/go , goland 2021.3 版本以上 go path : wsl中~/go go modules: GOPROXY=https://goproxy.cn,direct

但还是发现goland对于io/posix.go 中的"gitlab.xxx.net/storage/api/pb"解析不了,只有VScode可以解析…很怪

需要自己去 Sync dependencies of gitlab.xxx.net/storage: Finished successfully

但是还是下面的sync会卡住不动

中午又问了下大佬们,发现大家都是使用的windows的go……因为wsl的支持还很差劲…难受…要用windows的go来开发,然后用wsl的go来编译…

可以下午再研究一下试试…嗯嗯

研究go path 和 go modules

一起弄明白go的依赖管理 Go Modues/ GOPATH

import 首先会从$GOROOT中寻找,然后从$GOPATH/src 中寻找,如果是以./ 或者 ../ 开头的import 直接去对应的相对路径寻找。

External file changes sync may be slow on WSL2

https://blog.csdn.net/changlif/article/details/122067964

怀疑是使用了go module导致了每次都要重新同步下载所有的外部库代码

因为我每次打开工程,都要重新下载,所以我就关掉了go modules

然后发现就是默认使用go path了,但是go path下面竟然没有东西…

go get -x 发现也只会更新 bin 和 pkg 目录,不会更新src目录…

然后发现 VScode跳转也是直接跳转到了 pkg指定的目录了…不用 src…

发现还是要配置go module才会使用pkg中的包…

遇到找不到的包,就sync同步一下,然后goland就能使用go path里面的pkg里面的源码了…

每次都要重新同步,goland真low,白折腾这么久

而且git blame也显示一点都不友好

相比之下VScode使用wsl开发golang爽一万倍,不愧是go的开发者自己写的插件,所以以后还是使用VScode开发,odk