当前位置: 首页 > news >正文

开心灿烂go开发面试题

1.给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

package main

import “fmt”

type ListNode struct {
Val int
Next *ListNode
}

func main() {
l1 := &ListNode{Val: 1}
l2 := &ListNode{Val: 2}
l3 := &ListNode{Val: 3}
l4 := &ListNode{Val: 4}
l5 := &ListNode{Val: 5}
l1.Next = l2
l2.Next = l3
l3.Next = l4
l4.Next = l5
newlist := reverseList(l1)
for newlist != nil {
fmt.Print(newlist.Val)
if newlist.Next != nil {
fmt.Print(“,”)
}
newlist = newlist.Next
}
fmt.Println()
}

func reverseList(head *ListNode) *ListNode {
if head == nil || head.Next == nil {
return head
}
var prev *ListNode
cur := head
for cur != nil {
cur.Next, prev, cur = prev, cur, cur.Next
}
return prev
}

2.给你一个整数数组 nums 和一个整数 k 。你需要找到 nums 中长度为 k 的 子序列 ,且这个子序列的 和最大 。
请你返回 任意 一个长度为 k 的整数子序列。
子序列 定义为从一个数组里删除一些元素后,不改变剩下元素的顺序得到的数组。
示例1:
输入:nums = [2,1,3,3], k = 2
输出:[3,3]
示例2:
输入:nums = [-1,-2,3,4], k = 3
输出:[-1,3,4]
示例3:
输入:nums = [3,4,3,3], k = 2
输出:[3,4]
package main

import (
“fmt”
“sort”
“strconv”
“strings”
)

func main() {
//nums := []int{2, 1, 3, 3}
//k := 2
nums := []int{-1, -2, 3, 4}
k := 3
newSlice := SearchMaxSlice(nums, k)
fmt.Println(newSlice)
}

func SearchMaxSlice(nums []int, k int) []int {
n := len(nums)
temp := make([]int, n)
copy(temp, nums)
sort.Slice(temp, func(i, j int) bool {
return temp[i] > temp[j]
})
newtemp := temp[:k]
newslice := []int{}
newslicestr := fmt.Sprint(newtemp)
for _, v := range nums {
if len(newslice) == k {
break
}
if strings.Contains(newslicestr, strconv.Itoa(v)) {
newslice = append(newslice, v)
}
}
return newslice
}

3.给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。
子数组是数组中元素的连续非空序列。
示例1:
输入:nums = [1,1,1], k = 2
输出:2
示例2:
输入:nums = [1,2,3], k = 3
输出:2

func main() {
//slic := []int{1, 1, 1}
slic := []int{1, 2, 3}
k := 3
fmt.Println(calSliceCount(slic, k))
}

func calSliceCount(nums []int, k int) int {
count := 0
for i := 0; i < len(nums); i++ {
sum := 0
for j := i; j < len(nums); j++ {
sum += nums[j]
if sum == k {
count++
}
}
}
return count
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/249736.html

相关文章:

  • C++/OpenCV地砖识别系统结合 Libevent 实现网络化 AI 接入
  • 雪豹速清APP:高效清理,畅享流畅手机体验
  • 【C++进阶篇】哈希的应用(位图)
  • 代码随想录算法训练营day4
  • Verilog自适应位宽与指定位宽不同导致模块无法正常执行
  • CMake 构建系统概述
  • CAD中DWG到DXF文件解析(一)
  • Linux入门(十六)shellshell变量设置环境变量位置参数变量预定义变量
  • langchain_mcp_adapters - MultiServerMCPClient 获取工具
  • 全球化2.0|云轴科技ZStack联合Teleplex举办技术沙龙 · 吉隆坡站
  • Flask文件上传与异常处理完全指南
  • 【Qt】QStateMachine状态机-对状态机分组、历史状态,实现复杂状态机
  • Git命令与代码仓库管理
  • qt中自定义控件编译成动态库
  • RabbitMQ核心函数的参数意义和使用场景
  • 深入解析JVM字节码执行引擎
  • SpringBoot自动化部署实战指南
  • 5、ZYNQ PL 点灯--流水灯
  • Android 中 OkHttp 的自定义 Interceptor 实现统一请求头添加
  • Laravel 从版本 5 到 12 每个版本都引入了一些新的特性、改进和弃用的功能
  • Android 获取签名 keystore 的 SHA1和MD5值
  • 前端构建工具(Webpack\Vite\esbuild\Rspack)拆包能力深度解析
  • TC3xx中PFLASH缓存对XCP标定常量的影响
  • 13_算法链与管道
  • 机器学习算法_支持向量机
  • Linux免驱使用PCAN,使用方法以Ubuntu为例
  • 123数字人视频剪辑源码搭建部署/数字人视频创作技术开发
  • 数据结构 学习 栈 2025年6月14日 11点09分
  • 使用Docker安装FFmpeg
  • YOLOv2 训练过程详解:从数据到模型落地的全流程解析