小红书前端3.26笔试第三题

算法难度好像比别的笔试小一些,正常无优化都能a82%,利用=号优化一下100%,赛码好像跟牛客挺像的,但是用户体验好像两个极端

package main

import "fmt"

func scan(n int, dist []int) {
	for i := 0; i < n; i++ {
		fmt.Scan(&dist[i])
	}
}
func main() {
	N := 0
	fmt.Scan(&N)
	arr := make([]int, N)
	scan(N, arr)
	M := 0
	fmt.Scan(&M)
	Ls := make([]int, M)
	Rs := make([]int, M)
	Os := ""
	Xs := make([]int, M)
	scan(M, Ls)
	scan(M, Rs)
	fmt.Scan(&Os)
	scan(M, Xs)
	var compute func(int, int) int
	compute = func(i int, p int) int {
    if i==-1{
      return arr[p]
    }
		l, r, o, x := Ls[i], Rs[i], Os[i], Xs[i]
    if p<r&&p>=l-1{
      if o == '|' {
        return compute(i-1,p) | x
      } else if o == '&' {
        return compute(i-1,p) & x
      }else{
        return x
      }
    }else{
      return compute(i-1,p)
    }
	}
  for p:=0;p<N;p++{
    arr[p]=compute(M-1,p)
  }
	for i := 0; i < N; i++ {
		fmt.Print(arr[i], " ")
	}
}

全部评论
这。。。我直接fmt.Println算我错,还以为逻辑处理错了,原来是要这样写。。。
1 回复 分享
发布于 2023-03-26 18:11 四川
这是什么语言
1 回复 分享
发布于 2023-03-26 18:25 湖北
什么岗昂!
点赞 回复 分享
发布于 2023-03-26 18:30 美国
请问为什么把修改过程独立写到compute()里面可以起到优化作用?
点赞 回复 分享
发布于 2023-03-26 18:40 上海
请问我这样写有啥错误呀,看一小时了没看出来,测试样例能过,可是提交不通过 谢谢! func main() { n := 0 fmt.Scanln(&n) arr := []int{} //数组长度n for i := 0; i < n; i++ { t := 0 fmt.Scan(&t) arr = append(arr, t) } m := 0 fmt.Scanln(&m) //操作次数 left := []int{} for i := 0; i < m; i++ { t := 0 fmt.Scan(&t) left = append(left, t) } right := []int{} for i := 0; i < m; i++ { t := 0 fmt.Scan(&t) right = append(right, t) } ope := "" fmt.Scanln(&ope) xarr := []int{} for i := 0; i < m; i++ { t := 0 fmt.Scan(&t) xarr = append(xarr, t) } for i := 0; i < m; i++ { l, r := left[i], right[i] o := ope[i] x := xarr[i] for j := l - 1; j < r; j++ { if o == '=' { arr[j] = x } else if o == '|' { arr[j] = x | arr[j] } else { arr[j] = x & arr[j] } } } for i := 0; i < len(arr)-1; i++ { fmt.Printf("%d ", arr[i]) } fmt.Print(arr[len(arr)-1]) }
点赞 回复 分享
发布于 2023-03-26 19:28 天津
我想问一下面试题必须用js写还是其他语言也可以
点赞 回复 分享
发布于 2023-03-27 22:30 美国
招联金融2024届实习生招聘正式启动 大佬可以主页看下
点赞 回复 分享
发布于 2023-04-05 14:29 广东

相关推荐

11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
评论
1
8
分享
牛客网
牛客企业服务