【面试宝典】Golang面试中必问的算法题汇总!
Golang在近年来愈加流行的同时,越来越多的企业已经开始使用Golang作为其后端开发的首选语言。因此,Golang面试也成为了很多企业的招聘标准之一。在这篇文章中,我们将为您汇总一些Golang面试中常见的算法题,希望为您的面试提供帮助。
1. 两数之和
给定一个整数数组nums和一个目标值target,请您在数组中找出和为目标值的两个整数,并返回它们的下标。可以假设每个输入只对应一种答案,不可以重复使用数组中同样的元素。
示例:
```go
func twoSum(nums []int, target int) []int {
m := make(map[int]int)
for i, num := range nums {
complement := target - num
if _, ok := m[complement]; ok {
return []int{m[complement], i}
}
m[num] = i
}
return nil
}
```
2. 反转字符串
编写一个函数,将字符串s反转过来。输入字符串以字符数组char的形式给出。
示例:
```go
func reverseString(s []byte) {
left, right := 0, len(s)-1
for left < right {
s[left], s[right] = s[right], s[left]
left++
right--
}
}
```
3. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
示例:
```go
func longestCommonPrefix(strs []string) string {
if len(strs) == 0 {
return ""
}
prefix := strs[0]
for _, str := range strs {
for strings.Index(str, prefix) != 0 {
prefix = prefix[:len(prefix)-1]
if prefix == "" {
return ""
}
}
}
return prefix
}
```
4. 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的。
示例:
```go
func isPalindrome(x int) bool {
if x < 0 || (x != 0 && x%10 == 0) {
return false
}
revertedNumber := 0
for x > revertedNumber {
revertedNumber = revertedNumber*10 + x%10
x /= 10
}
return x == revertedNumber || x == revertedNumber/10
}
```
5. 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
```go
type ListNode struct {
Val int
Next *ListNode
}
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
dummy := &ListNode{}
cur := dummy
for l1 != nil && l2 != nil {
if l1.Val < l2.Val {
cur.Next = l1
l1 = l1.Next
} else {
cur.Next = l2
l2 = l2.Next
}
cur = cur.Next
}
if l1 != nil {
cur.Next = l1
}
if l2 != nil {
cur.Next = l2
}
return dummy.Next
}
```
以上就是我们为大家搜集整理的Golang面试中常见的算法题,希望能够帮助到您,也希望面试能够顺利通过。