题解 | #牛群排队#

牛群排队

https://www.nowcoder.com/practice/8d8ae3937cd5466eb330ca484ca5ed80

考察知识点:回溯

回溯法的定义(来源:制心一处

回溯法(back tracking)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回到上一步,重新选择。

题目分析:

因为题目要求降序返回答案,所以我们先对nums进行排序,然后按照数组中数的顺序来进行递归回溯。这样数大的在前面并先被选择,就是我们的优选条件。

回溯法就是这样试探性地进行选择,当满足条件时就加入到结果中;否则就回溯回去,试探性选择下一个优选值。注意回溯时要恢复现场,消除由于上一次的选择所产生的影响。

所用编程语言:C++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型vector<vector<>>
     */
    void dfs (vector<int> &nums, vector<int> &cows, vector<vector<int>> &res, vector<bool> st) {
        int size = nums.size();
        if (cows.size() == size) {
            res.push_back(cows);
            return;
        }

        for (int i = 0; i < size; i++) {
            if (st[i]) continue;
            cows.push_back(nums[i]);
            st[i] = true;
            dfs(nums, cows, res, st);
            st[i] = false;
            cows.pop_back();
        }
    }
    vector<vector<int> > cow_permute(vector<int>& nums) {
        // write code here
        sort(nums.begin(), nums.end(), greater<int>());
        vector<vector<int>> res;
        vector<int> cows;
        vector<bool> st(nums.size(), false);	//记录nums[i]是否被访问过
        dfs(nums, cows, res, st);
        return res;
    }
};

全部评论

相关推荐

2025-12-06 01:10
已编辑
哈尔滨工程大学 Java
一面问的真细,二面不知为啥变双机位。9.29快手主站平时怎么学习&nbsp;AI&nbsp;的,国内外知名大模型,实习公司都用的什么大模型,怎么评估效果的java池化思想,线程池构造方法的核心参数,线程池中阻塞队列注意事项,submit方法参数和执行逻辑,shutdown和shutdownnow,核心线程允许过期吗threadlocal底层,为什么key是弱引用,key回收了再get或者set这个value会怎样aqs,如何保证公平性java代理java堆划分,新生代还有别的晋升老年代的情况吗,什么时候触发gc,gc失败抛什么异常,如何排查oom,导出dump命令redis数据结构,哪个底层是跳表,和其他数据结构对比布隆过滤器会出现大key问题吗,你咋实现的布隆过滤器你怎么实现redis分布式锁,可重入,续期聚簇索引非聚簇索引select语句会加锁吗,怎么实现的不加锁undolog&nbsp;redolog&nbsp;binlog怎么能让select加锁,update这个范围加的什么锁,update一条呢手撕简单01背包,接雨水10.10快手主站意图识别用的哪个大模型,走到意图和rag的比例,faq是点击的吗自然语言怎么识别的gap一年干啥了,转正怎么样没跟组里提意向吗,研究生研究方向是传统算法吗,会大模型微调吗注册场景为什么用布隆过滤器,原理分布式锁底层的key怎么拼的,value里是什么redis持久化zset底层mysql索引结构,一个表三个字段有主键唯一索引和没索引的字段会有几个b+树,聚簇索引非聚簇索引存的啥无手撕
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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