尝试了LeetCode

感想

有一说一,刚打开LeetCode没看懂怎么写代码提交,题解也没看到输入数据,后面细品一波,是这个数据写好了,可以当做一个函数来看,在函数中写代码就行了

做了两道题试水

第一题:组合(使用简单回溯)

在这里插入图片描述

class Solution {
    
    
private:
    vector<vector<int>> result;//保存所有组合方式
    vector<int> path;//只保存一种组合方式
    void bfs(int n,int k,int startIndex){
    
    //回溯
        if(path.size()==k){
    
    //终止条件:当path保存的数据满足题目所描述的k个数据一个组合
            result.push_back(path);//就将path保存到result中
            return ;
        }
        for(int i=startIndex; i<=n; i++){
    
    
            path.push_back(i);//处理节点
            bfs(n,k,i+1);
            path.pop_back();//回溯,撤销回溯的节点
        }

    }
public:
	//这个是系统提供的方法,在这里调用就行
    vector<vector<int>> combine(int n, int k) {
    
    //这个n,k就是题目描述的要输入的数据,已经预置好了
        bfs(n,k,1);//调用上面的方法
        return result;//返回一个vector
    }
};

题目二:找重复数据

这个数据不大,用暴力就能过,也可以利用set的数据不重复属性来做也可以用二分法处理

class Solution {
    
    
public:
	//系统提供的一个int类型的函数
    int findRepeatNumber(vector<int>& nums) {
    
    
        int n = nums.size();
        sort(nums.begin(),nums.end());//排序
        for(int i=1;i<n;i++)
        {
    
    
            if(nums[i]==nums[i-1])           
                return nums[i]; //重复就返回这个数据          
        }
        return -1;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_43337254/article/details/108475349