【golang】golang牛客语法题记录

前言

最近学go,没找到个好点的OJ,最后打算直接用牛客的了。

牛客网在线编程_语法篇_GO语言入门


题目

前面变量,常量,指针,字符串就不放代码了,都比较简单;后面的题目也只放一些和Go语法相关度大的,重复的也不会多放

逻辑运算_牛客题霸_牛客网

package main
//import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param a bool布尔型 
 * @param b bool布尔型 
 * @return bool布尔型一维数组
*/
func logicalOperation( a bool ,  b bool ) []bool {
    // write code here
    return []bool{a && b, a || b, !a, !b}
}


位运算_牛客题霸_牛客网

package main
//import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param a int整型 
 * @param b int整型 
 * @return int整型一维数组
*/
func bitOperate( a int ,  b int ) []int {
    // write code here
    return []int{a & b, a | b, a ^ b}
}


联谊活动_牛客题霸_牛客网

package main


/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param x int整型 参加活动人数
 * @return bool布尔型
 */
func odevity(x int) bool {
	// write code here
	if x%2 == 1 {
		return false
	} else {
		return true
	}
}

创建切片_牛客题霸_牛客网

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param length int整型 切片初始化长度
 * @param capacity int整型 切片初始化容量
 * @return int整型一维数组
*/
func makeslice( length int ,  capacity int ) []int {
    // write code here
    arr := make([]int, length, capacity)
    for i,_ := range arr{
        arr[i] = i
    }
    return arr
}

切片复制_牛客题霸_牛客网

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param src int整型一维数组 源切片
 * @param des int整型一维数组 目的切片
 * @return int整型一维数组
*/
func sliceCopy( src []int ,  des []int ) []int {
    // write code here
    des = make([]int, len(src))
    copy(des,src)
    return des
}

出队_牛客题霸_牛客网

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s int整型一维数组 身高
 * @param index int整型 出队索引
 * @return int整型一维数组
*/
func deleteElement( s []int ,  index int ) []int {
    // write code here
    return append(s[:index], s[index + 1:]...)
}

评委打分_牛客题霸_牛客网

package main

import (
	"math"
)

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param s int整型一维数组 评委给出分数
 * @return int整型一维数组
 */
func min(a int, b int) int {
    if (a > b) {
        return b
    } else {
        return a
    }
}
func max(a int, b int) int {
    if (a > b) {
        return a
    } else {
        return b
    }
}

func minAndMax( s []int ) []int {
    // write code here
    low := math.MaxInt64
    high := math.MinInt64
    for i := 0; i < len(s); i++ {
        low = min(low, s[i])
        high = max(high, s[i])
    }   
    return []int{low,high}
}

调整顺序_牛客题霸_牛客网

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s int整型一维数组 
 * @return int整型一维数组
*/
func convert( s []int ) []int {
    // write code here
    for i,j := 0, len(s) - 1; i < j; i,j = i + 1,j - 1 {
        s[i],s[j] = s[j],s[i]
    }
    return s
}


合并有序数组_牛客题霸_牛客网

package main
// import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums1 int整型一维数组 
 * @param m int整型 
 * @param nums2 int整型一维数组 
 * @param n int整型 
 * @return int整型一维数组
*/
// 双指针遍历
func merge( nums1 []int ,  m int ,  nums2 []int ,  n int ) []int {
    // write code here
    // 倒序合并
    index1,index2 := m - 1, n - 1
    for i := m + n - 1; i >= 0; i--{
        if index1 == -1 || index2 == -1 {
            break
        }
        if (nums1[index1] >= nums2[index2]) {
            nums1[i] = nums1[index1]
            index1--
        } else {
            nums1[i] = nums2[index2]
            index2--
        }
    }
    return nums1 
}

成绩表_牛客题霸_牛客网

package main

import (
    "fmt"
)
func main() {
  var table map[string]int = make(map[string]int)
  table["小明"] = 60
  table["小王"] = 70
  table["张三"] = 95
  table["张伟"] = 88
  table["李四"] = 98
  table["王五"] = 100
  fmt.Println(table)
 }

单词字符_牛客题霸_牛客网

package main

import (
)

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param s string字符串
 * @return char字符型
 */
func character( s string ) byte {
    // write code here
    arr := []byte(s)
    count := 0
    var res byte
    hashmap := make(map[byte]int)
    for _,ch := range arr{
        hashmap[ch]++
        if (hashmap[ch] > count) {
            res = ch
            count = hashmap[ch]
        }
    }
    return res
}

字符串构成_牛客题霸_牛客网

package main
// import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param des string字符串 
 * @param src string字符串 
 * @return bool布尔型
*/
func canConstruct( des string ,  src string ) bool {
    // write code here
    srcByte := []byte(src)
    desByte := []byte(des)
    srcHash := make(map[byte]int)
    for _,ch := range srcByte{
        srcHash[ch]++
    }
    for _,ch := range desByte{
        if srcHash[ch] > 0{
            srcHash[ch]--
        } else {
            return false
        }
    }
    return true
}

不重复的数_牛客题霸_牛客网

package main
// import "fmt"
import "sort"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s int整型一维数组 
 * @return int整型一维数组
*/
func getNoRepeat( s []int ) []int {
    // write code here
    var res []int
    hashmap := make(map[int]int)
    for _,i := range s{
        if _,ok := hashmap[i]; ok == false{
            hashmap[i] = 1
        } else {
            hashmap[i]++
        }
    }
    for i,j := range hashmap{
        if j == 1 {
            res = append(res, i)
        }
    }
    sort.Ints(res)
    return res
}

推箱子_牛客题霸_牛客网

package main
// import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param forwards string字符串 推箱子方向
 * @return bool布尔型
*/
func pushBox( forwards string ) bool {
    // write code here
    var x int = 0
    var y int = 0
    for _,ch := range forwards{
        if string(ch) == "U" {
            y++
        } else if string(ch) == "D" {
            y--
        } else if string(ch) == "L" {
            x--
        } else if string(ch) == "R" {
            x++
        } else {
            break
        }
    }
    return x == 0 && y == 0
}

乘法口诀表_牛客题霸_牛客网

package main

import "fmt"
func main() {
  fmt.Println("1*1=1")
  for i := 2; i <= 9; i++{
    for j := 1; j <= i - 1; j++{
        str := fmt.Sprintf("%d*%d=%-3d",j,i,i*j)
        fmt.Printf("%s", str)
    }
    str := fmt.Sprintf("%d*%d=%-3d", i,i,i*i)
    fmt.Printf("%s\n", str)
  }
}

质量检查_牛客题霸_牛客网

package main
// import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param material int整型一维数组 成品质量
 * @param standard int整型 质检标准
 * @return int整型一维数组
*/
func check( material []int ,  standard int ) []int {
    // write code here
    var res []int
    for _,j := range material {
        if (j >= standard) {
            res = append(res, j)
        }
    }
    return res
}

数字的阶乘_牛客题霸_牛客网

package main
// import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param i int整型 数字
 * @return int整型
*/
func factorial( i int ) int {
    // write code here
    if i == 1 {
        return i
    }
    return i * factorial(i - 1)
}

学生信息II_牛客题霸_牛客网

package main

import (
    "fmt"
)

type student struct{
    name string
    gender bool
    age int
    score int
}

func (this student) show() {
    fmt.Println(this.name)
    fmt.Println(this.gender)
    fmt.Println(this.age)
    fmt.Println(this.score)
}

func main() {
  s := student{name: "小明", gender: true, age : 23, score : 88}
  s.show()
}

学生信息III_牛客题霸_牛客网

package main

import (
	"fmt"
	"reflect"
)
type Address struct{
    province string
    city string
}

type Student struct{
    name string
    sex bool
    age int
    score int
    add Address
}

type I interface {}

func getMsg(i I) {
    v := reflect.ValueOf(i)
    for i:=0; i < v.NumField(); i++ {
        if (v.Field(i).Kind() == reflect.Struct) {
            for i2:=0 ; i2 < v.Field(i).NumField(); i2++ {
                fmt.Println(v.Field(i).Field(i2))
            }
        } else {
            fmt.Println(v.Field(i))
        }
    }
}

func main() {
    var xm I
    xm = Student{"小明", true, 23, 88, Address{"湖南省", "长沙市"}}
    getMsg(xm)
}

动物和老虎_牛客题霸_牛客网

package main

import (
    "fmt"
)

type ani interface{
    sleep() string
    eat() string
}

type tiger struct{
    //...
}

func (t tiger) sleep() string{
    return "sleep"
}
func (t tiger) eat() string{
    return "eat"
}

func main() {
    tig := tiger{}
    fmt.Println(tig.sleep())
    fmt.Println(tig.eat())
}

网络延迟_牛客题霸_牛客网

package main
import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param ping int整型 网络延迟值
 * @return string字符串
*/
type NetWorkDelayError struct{

}
func (n NetWorkDelayError) Error() string{
    return fmt.Sprintf("网络延迟")
}

func defineerr( ping int ) string {
    // write code here
    if ping > 100 {
        return NetWorkDelayError{}.Error()
    }
    return ""
}

体温异常_牛客题霸_牛客网

package main
// import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param t double浮点型 体温
 * @return string字符串
*/
func temperature( t float64 ) (rs string) {
    // write code here
    defer func() {
        if err := recover(); err != nil {
            rs = "体温异常"
        }
    }()
    if t > 37.5 {
        panic("体温异常")
    }
    return rs
}

到此结束了~

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值