前言
最近学go,没找到个好点的OJ,最后打算直接用牛客的了。
题目
前面变量,常量,指针,字符串就不放代码了,都比较简单;后面的题目也只放一些和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)
}
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()
}
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
}
到此结束了~