Junedayday Blog

六月天天的个人博客

0%

Go-Leetcode

Leetcode-4 寻找两个正序数组的中位数

原题链接 https://leetcode-cn.com/problems/median-of-two-sorted-arrays/

1
2
func findMedianSortedArrays(nums1 []int, nums2 []int) float64 {
}

在解这个题之前,我们要注意奇数和偶数的边界情况。

  • 奇数2n+1个,我们要取第n+1小的数
  • 偶数2n个,我们要取第n和n+1小的数

在Go语言中,因为是强类型的,切片nums1nums2是整数,返回值则是浮点数

这是我们遇到的第一道hard级别的题目,让我们一起尝试攻克它!

阅读全文 »

Go-Leetcode

Leetcode-2 两数相加

原题链接 https://leetcode-cn.com/problems/add-two-numbers/

我们继续看上一个题目,这次我们尝试写一个非递归的解法。

1
2
3
4
5
6
7
type ListNode struct {
Val int
Next *ListNode
}

func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
}

为了能保证代码都能执行,我会贴出所有代码,重点会用注释着重说明

我个人认为,非递归比递归写法更加麻烦,所以放到了第二讲。一开始直接上手用非递归的解法,很容易迷失在 边界条件 和 循环条件 中,排查问题也比较麻烦。

阅读全文 »

Go-Study

从一个示例讲起

用一个简单列表来表示我们的模块A依赖:

  • B1v1.0.0
    • C1v1.1.0
    • C2 v1.2.0
  • B2 v1.2.0
    • C1v1.1.2
    • C3 v1.2.0

表示 A依赖B1与B2,而B1又依赖C1、C2,B2依赖C1、C3

这里,我们把关注点放到有争议的C1,它存在两个版本v1.1.0v1.1.2。而最终A选择的是v1.1.2版本的C1。

  • B1v1.0.0
    • C1v1.1.0
    • C2 v1.2.0
  • B2 v1.2.0
    • C1v1.1.2
    • C3 v1.2.0
阅读全文 »

Go-Study

Go Mod的官方说明

Go语言自从推出了go mod作为版本管理工具后,结束Go语言版本管理工具的纷争,实现了大一统。

相信有很多人都对这个版本管理的机制都有基础的概念、但并不深入。而官方把最核心的实现,都放在这一篇 https://golang.org/ref/mod 文档中。

今天,我们一起来读读这一篇文章。

阅读全文 »

Go-Study

背景介绍

通过前面两讲,我们对错误的认知已经超过很多人了。让我们继续去看看常见项目中对错误的处理方式,探索背后的深意。

在介绍具体的处理方式前,我们先来模拟一个场景:我们要去动物园进行一次游玩,主要行为有

  • 进入动物园
  • 参观熊猫
  • 参观老虎
  • 离开动物园
阅读全文 »

Go-Study

从一个Web项目开始

经过了 入门篇 的学习,大家已经初步了解Go语言的语法,也能写常见的代码了。接下来,我们就从一个Web项目入手,看看一些常见的技能与知识吧。

我们先简单地聊一下这个Web项目的背景:我们要做的是一个简单的web系统 ,有前端同学负责界面的开发,后端不会考虑高并发等复杂情况。

我们先从一个Web请求出发,看看会涉及到哪些模块。

阅读全文 »