> 本文参考 [**嗨客网**](https://haicoder.net) Golang [**实战**](https://haicoder.net/case/index.html)
# **Golang LeetCode练习题及答案(三)**
# **前言**
本篇文章是关于一部分 Golang LeetCode 的题目以及详细的解题思路,每道题都附有答案链接,答案解题的每个步骤到运行结果都十分详细,十分适合小白拿来练习,也十分适合准备面试的各位练手,这篇文章我会不断更新。题目都是对应 LeetCode 中练习题,答案是使用 Golang 的解题思路及方法,大家在学习了 [**Golang**](https://haicoder.net/golang/golang-tutorial.html) 相关教程之后,刷几道 LeetCode 相关的练习题,在学习过程中,觉得十分抽象、晦涩难懂的知识点,配合一道练习题,或许会有意想不到的效果哦!
# **正文:Golang LeetCode(三)**
### **11.Golang盛最多水的容器**
**题目**:
用 [**Golang**](https://haicoder.net/golang/golang-tutorial.html) 实现给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
说明:你不能倾斜容器,且 n 的值至少为 2。
**示例**:
```shell
输入: [1,8,6,2,5,4,8,3,7]
输出: 49
```
**答案**:[**链接**](https://haicoder.net/case/golang-leetcode/golang-leetcode11.html)
### **12.Golang整数转罗马**
**题目**:
用 [**Golang**](https://haicoder.net/golang/golang-tutorial.html) 实现罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
```go
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
```
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。 X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。 给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。
**示例1**:
```shell
输入: 3
输出: "III"
```
**示例2**:
```shell
输入: 4
输出: "IV"
```
**示例3**:
```shell
输入: 58
输出: "LVIII"
解释: L = 50, V = 5, III = 3.
```
**答案**:**[链接](https://haicoder.net/case/golang-leetcode/golang-leetcode12.html)**
### **13.Golang罗马转整数**
**题目**:
用 [**Golang**](https://haicoder.net/golang/golang-tutorial.html) 实现罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
```go
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
```
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。 X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。 给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
**示例1**
```go
输入: "III"
输出: 3
```
**示例2**
```shell
输入: "IV"
输出: 4
```
**示例3**
```shell
输入: "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
```
**答案**:**[链接](https://haicoder.net/case/golang-leetcode/golang-leetcode13.html)**
### **14.Golang最长公共前缀**
**题目**:
用 [**Golang**](https://haicoder.net/golang/golang-tutorial.html) 实现编写一个 **[函数](https://haicoder.net/golang/golang-func.html)** 来查找 **[字符串](https://haicoder.net/golang/golang-string.html)** 数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。
**示例1**
```shell
输入: ["flower","flow","flight"]
输出: "fl"
```
**示例2**
```shell
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
```
**答案**:**[链接](https://haicoder.net/case/golang-leetcode/golang-leetcode14.html)**
### **15.Golang三数之和**
**题目**:
用 [**Golang**](https://haicoder.net/golang/golang-tutorial.html) 实现给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
**示例**
```go
给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
```
**答案**:**[链接](https://haicoder.net/case/golang-leetcode/golang-leetcode15.html)**
# **后续**
**上一章**:**[Golang LeetCode练习题及答案(二)](https://studygolang.com/articles/30484)**
**下一章**:**[Golang LeetCode练习题及答案(四)](https://studygolang.com/articles/30735)**
**其他章节**:**[Golang LeetCode练习题大纲](https://studygolang.com/articles/30473)**
因为文章数量过多,整理不易,所以如果更新过慢,请大家谅解,文章我会尽自己最大速度更新,大家可以先关注我,或者收藏下这篇文章,我会持续更新的,以上案例是提供给有一定 Golang 基础的同学看的,如果感觉做题有些压力,可以先在各类教程网先学习 Golang 语言,本人这里当然首推上方习题及答案来源的 **[嗨客网](https://haicoder.net/)**。
***2020.09.11更,未完待续。。。。。***
有疑问加站长微信联系(非本文作者))