Contents

ARST打卡第258周

lc2924_找到冠军 II 【TED演讲】Are there too many people on earth or too few. golang注释 golang线程安全的tcp连接池

Algorithm

lc2924_找到冠军 II

思路: 感觉就是直接找出入度为0的点。如果有多个入度为0的点,返回-1.

可以直接初始化一个vis数组表示是否有入度,最终没vis的pk。这样就是O(n)复杂度。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
    int findChampion(int n, vector<vector<int>>& edges) {
        vector<bool> vis(n, false);
        for (auto& edge : edges) {
            vis[edge[1]] = true;
        }
        int ans = -1;
        for (int i = 0; i < n; i++) {
            if (!vis[i]) {
                // 多个 ans 
                if (ans != -1) {
                    return -1;
                }
                ans = i;
            }
        }
        return ans;
    }
};

和题解一毛一样…感觉这题应该算easy.

Review

【TED演讲】Are there too many people on earth or too few.

生育率降低,劳动力成本变大,然后通货膨胀,导致进一步不敢生育,内卷圈…

感觉要促进发展人类健康,让老年人合理工作,以及让年轻人也不要那么内卷…

让世界变成一个更健康有韧性的世界吧,这得全世界一起想办法。

Tips

golang注释

发现自己用python的@param 注释无法失败,然后问了ChatGPT,发现要用markdown这种注释,终于预览舒服了。

当编写优秀的 Go 函数注释时,一些关键要点包括函数的目的、参数的含义、返回值的意义、函数行为的详细描述以及任何错误处理的信息。以下是几个示例:

  1. 示例1:文件读取函数
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// ReadFile 从指定路径读取文件内容并返回其字节切片。
// 参数:
//   - filename:要读取的文件的路径。
// 返回值:
//   - []byte:文件内容的字节切片。
//   - error:如果发生错误,则返回相应的错误信息。
// 函数行为:
//   该函数尝试读取指定路径的文件,并返回文件内容的字节切片。如果文件读取成功,则返回文件内容和 nil 错误;如果发生错误,则返回 nil 切片和相应的错误信息。
func ReadFile(filename string) ([]byte, error) {
    // 实现代码
}
  1. 示例2:HTTP 请求函数
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// HTTPGet 发起 GET 请求到指定的 URL,并返回响应的主体内容。
// 参数:
//   - url:要请求的 URL。
// 返回值:
//   - string:响应的主体内容。
//   - error:如果请求过程中出现错误,则返回相应的错误信息。
// 函数行为:
//   该函数通过 GET 方法向指定的 URL 发起 HTTP 请求,并返回响应的主体内容。如果请求成功,将返回响应主体的字符串表示;如果请求失败,则返回相应的错误信息。
func HTTPGet(url string) (string, error) {
    // 实现代码
}
  1. 示例3:排序函数
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// SortSlice 对给定的切片进行排序,并返回排序后的结果。
// 参数:
//   - data:要排序的切片。
//   - ascending:指定是否按升序排序。如果为 true,则按升序排序;如果为 false,则按降序排序。
// 返回值:
//   - []int:排序后的切片。
// 函数行为:
//   该函数使用快速排序算法对给定的切片进行排序。如果 ascending 参数为 true,则按升序排序;如果为 false,则按降序排序。函数返回排序后的切片。
func SortSlice(data []int, ascending bool) []int {
    // 实现代码
}

这些示例展示了如何编写清晰、简洁和易于理解的函数注释。通过提供必要的信息,函数注释可以帮助其他开发者更好地理解函数的作用、行为和使用方式。

Share

golang实现一个线程安全的tcp连接池,只需要通过读写锁加一个net.Conn就行。

发现网络上有开源的实现,于是直接拜读了: fatih/pool

接口简单,挺好的,推荐。