题解 | #数据分类处理#

数据分类处理

https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd

package main

import (
	"fmt"
	"strconv"
	"strings"
	"sort"
)

func getMatchIdx(n int, I []int) []int {
    var idxs []int
    ns := strconv.Itoa(n)
    
    for i, number := range I {
        rs := strconv.Itoa(number)
        if strings.Contains(rs, ns) {
            idxs = append(idxs, i)
        }
    }

    return idxs
}

func calculate(I []int, R []int) {
    var ans []int
    // 先对 R 进行排序和去重
    sort.Ints(R)
    set := make(map[int]struct{})
    var idx int
    for _, r := range R {
        if _, ok := set[r]; !ok {
            set[r] = struct{}{}
            R[idx] = r
            idx++
        }
    }
    R = R[:idx]

    // fmt.Printf("sorted R: %+v\n", R)

    // 对 R 中的每一个元素进行统计
    for _, r := range R {
        idxs := getMatchIdx(r, I)
        if len(idxs) == 0 {
            continue
        }

        ans = append(ans, r)
        ans = append(ans, len(idxs))
        for _, idx := range idxs {
            ans = append(ans, idx)
            ans = append(ans, I[idx])
        }
    }

    var s string
    s += fmt.Sprintf("%d ", len(ans))

    for _, num := range ans {
        s += fmt.Sprintf("%d ", num)
    }

    fmt.Println(s[:len(s)-1])
}

func main() {
    var m int
    fmt.Scan(&m)
    
    var I []int
    for i:=0; i<m; i++ {
        var num int
        fmt.Scan(&num)
        I = append(I, num)
    }

    var n int
    fmt.Scan(&n)
    
    var R []int
    for i:=0; i<n; i++ {
        var num int
        fmt.Scan(&num)
        R = append(R, num)
    }

    calculate(I, R)
}
// 本题输入为两行数字,中间用空格分开,所以采用:fmt.Scan(&num)

全部评论

相关推荐

在下uptown:山东的哥们得好好回答 第一问题,专业技能太少了,现在写的大部分都是模型迭代过渡期的技术栈,说白了今天用明天可能就不用,多补一些看家的本事 第二个问题,项目偏学术学习体现不出工程能力,deepresearch核心在于模型自我反馈自我纠正,没体现出来,RAG本身在落地应用上就是个伪命题。 再有就是,有实习经历可以弥补学历不足,建议放到学历下面,别人筛简历可能第一眼觉得学校不过关,但第二眼有实习经历,就给你面试了,藏到后面可能就没有第二眼了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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