Go 基础知识点自我总结 tips: 总结知识点一定要自己动手,这样知识点才能牢记! 比如开源社区有雨痕大佬的 Go 语言笔记,但是光看几个用法,而不进行代码的编写,代码能力提升不明显,能看懂,但是做不到,形成一种眼高手低的习惯。更何况,以后的工作本来就是写需求的代码,所以,各种基础知识点,快速过完! 1、保留字与预定义字1234567891011121314151617181920//保留字有 25 个break 2022-02-13 go #go basic
Go 面试复盘 先上总结: 面经光看没用,只有自己不断的面试,然后总结,自己理解性的进行描述才有意义,否则只是像八股文一样去背记,从而未能理解真正的含义。那么,可能下一次面试的时候,上一次面试的问题依然处于一种遗留的状态,这样就无法在技术的关键节点进行成长。 尤其是算法题,如果一两个月不复盘算法问题,那么算法思维存在,但是代码熟练度会下降,从而导致写算法的时间变长,以及相应的心态焦虑。至于算法的时间复杂度与空 2022-02-12 go #interview
1984. 学生分数的最小差值 1984. 学生分数的最小差值12345678910111213141516171819202122232425262728293031给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数。另给你一个整数 k 。从数组中选出任意 k 名学生的分数,使这 k 个分数间 最高分 和 最低分 的 差值 达到 最小化 。返回可能的 最小差值 。示例 1:输入: 2022-02-11 Leetcode #sort
707. 设计链表 707.设计链表题目12345678910111213141516171819202122设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:g 2022-02-10 Leetcode #LinkList
Zinx 框架的学习 开始学习 Go 语言实现的 zinx 框架,项目地址为:https://github.com/chaggle/zinx-study 使用 go mod 管理, 初始化为 go mod init github.com/chaggle/zinx-study并部署代码到 github.com 以及使用 go get 同步到本地 Gopath 的 github 包下! V0.1 基 2022-01-10 go #zinx
Go语言实现的轻量级IM项目 使用 go 实现的微型服务器项目地址:https://github.com/chaggle/go-im V0.1 :建立基础的 main.go server.go,相应功能如下 main 功能主要为创建服务器以及启动服务器 server 功能有: 1、创建 server 对象 2、启动 Server 服务(TCP socket 套接字) 3、处理链接的业务 V0.2 :用户上线功能 user 功 2022-01-04 go #Instant Messaging
Day 91 1206. 设计跳表 1206. 设计跳表题目123456789101112131415161718192021222324252627282930313233343536373839404142434445不使用任何库函数,设计一个跳表。跳表是在 O(log(n)) 时间内完成增加、删除、搜索操作的数据结构。跳表相比于树堆与红黑树,其功能与性能相当,并且跳表的代码长度相较下更短,其设计思想与链表相似。例如,一个跳表包 2021-12-09 91-day-algorithm #Skip List
Day 90 1054. 距离相等的条形码 1054. 距离相等的条形码题目12345678910111213141516171819202122在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。请你重新排列这些条形码,使其中两个相邻的条形码 不能相等。 你可以返回任何满足该要求的答案,此题保证存在答案。 示例 1:输入:[1,1,1,2,2,2]输出:[2,1,2,1,2,1]示例 2:输入:[1,1,1,1,2 2021-12-08 91-day-algorithm #Binary Search
Day 89 378. 有序矩阵中第 K 小的元素 378. 有序矩阵中第 K 小的元素题目123456789101112131415161718192021222324给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。 示例 1:输入:matrix = [[1,5,9],[10,11,13],[12,13,15]], k 2021-12-07 91-day-algorithm #unordered_map
Day 88 451. 根据字符出现频率排序 451. 根据字符出现频率排序题目1234567891011121314151617181920212223242526272829303132333435给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只 2021-12-06 91-day-algorithm #unordered_map
Day 87 23. 合并K个升序链表 23. 合并 K 个升序链表题目123456789101112131415161718192021222324252627282930313233343536给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 2021-12-05 91-day-algorithm #heap
Day 86 1046. 最后一块石头的重量 1046. 最后一块石头的重量题目12345678910111213141516171819202122232425262728293031有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 2021-12-04 91-day-algorithm #heap
Day 85 215. 数组中的第K个最大元素 215. 数组中的第K个最大元素题目1234567891011121314151617181920给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 2021-12-03 91-day-algorithm #heap
Day 83-84 28. 实现 strStr() 28. 实现 strStr()题目1234567891011121314151617181920212223242526272829303132333435363738实现 strStr() 函数。给你两个字符串 haystack 和 needle 在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 说明:当 needle 2021-12-02 91-day-algorithm #string
Day 82 47. 全排列 II 47. 全排列 II题目1234567891011121314151617181920给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2], [1,2,1], [2,1,1]] 示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1 2021-11-30 91-day-algorithm #traceback
Day 81 40. 组合总和 II 40. 组合总和 II题目1234567891011121314151617181920212223242526272829303132333435给定一个数组 candidates 和一个目标数 target 找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。 示例 1:输入: ca 2021-11-29 91-day-algorithm #DFS
Day 80 39. 组合总和 39. 组合总和题目1234567891011121314151617181920212223242526272829303132333435363738给定一个无重复元素的正整数数组 candidates 和一个正整数 target找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则 2021-11-29 91-day-algorithm #DFS
Day 79 814. 二叉树剪枝 814. 二叉树剪枝题目123456789101112131415161718192021222324252627282930给你二叉树的根结点 root ,此外树的每个结点的值要么是 0 ,要么是 1 。返回移除了所有不包含 1 的子树的原二叉树。节点 node 的子树为 node 本身加上所有 node 的后代。 示例 1:输入:root = [1,null,0,0,1]输出:[1,null, 2021-11-26 91-day-algorithm #tree #recursion
Day 78 1319. 连通网络的操作次数 1319. 连通网络的操作次数题目1234567891011121314151617181920212223242526272829303132333435363738394041424344454647用以太网线缆将 n 台计算机连接成一个网络,计算机的编号从 0 到 n-1。线缆用 connections 表示,其中 connections[i] = [a, b] 连接了计算机 a 和 b。网 2021-11-26 91-day-algorithm #UnionFind
Day 77 924. 尽量减少恶意软件的传播 924. 尽量减少恶意软件的传播题目1234567891011121314151617181920212223242526272829303132333435363738394041在节点网络中,只有当 graph[i][j] = 1 时,每个节点 i 能够直接连接到另一个节点 j。一些节点 initial 最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节 2021-11-25 91-day-algorithm #UnionFind