小红书前端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], " ")
	}
}

全部评论
这是什么语言
1 回复 分享
发布于 2023-03-26 18:25 湖北
这。。。我直接fmt.Println算我错,还以为逻辑处理错了,原来是要这样写。。。
1 回复 分享
发布于 2023-03-26 18:11 四川
招联金融2024届实习生招聘正式启动 大佬可以主页看下
点赞 回复 分享
发布于 2023-04-05 14:29 广东
我想问一下面试题必须用js写还是其他语言也可以
点赞 回复 分享
发布于 2023-03-27 22:30 美国
请问我这样写有啥错误呀,看一小时了没看出来,测试样例能过,可是提交不通过 谢谢! 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 天津
请问为什么把修改过程独立写到compute()里面可以起到优化作用?
点赞 回复 分享
发布于 2023-03-26 18:40 上海
什么岗昂!
点赞 回复 分享
发布于 2023-03-26 18:30 美国

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
xiaolihuam...:当然还有一种情况是你多次一面挂,并且挂的原因都比较类似,例如每次都是算法题写不出来。面试官给你的评价大概率是算法能力有待加强,算法能力有待提高,基础知识掌握的不错,项目过关,但是coding要加强。短期内高强度面试并且每次都是因为同样的原因挂(这个你自己肯定很清楚),会形成刻板印象,因为你偶尔一次算法写不出来,面试官自己也能理解,因为他清楚的知道自己出去面试也不一定每一次面试算法都能写出来。但是连续几次他发现你的面屏里面都是算法有问题,他就认为这不是运气问题,而是能力问题,这种就是很客观的评价形成了刻白印象,所以你要保证自己。至少不能连续几次面试犯同样的错。算法这个东西比较难保证,但是有些东西是可以的,例如某一轮你挂的时候是因为数据库的索引,这个知识点答的不好,那你就要把数据库整体系统性的复习,下一轮面试你可以,项目打的不好,可以消息队列答的不好,但是绝对不可以数据库再答的不好了。当然事实上对于任何面试都应该这样查漏补缺,只是对于字节来说这个格外重要,有些面试官真的会问之前面试官问过的问题
点赞 评论 收藏
分享
评论
1
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务