DataWhale task07

不同路径

class Solution {
    public int uniquePaths(int m, int n) {
        int[][] f=new int[m+1][n+1];
         for(int i=m;i>0;i--){
             f[i][1]=1;
         }
         for(int i=n;i>0;i--){
             f[1][i]=1;
         }
         for(int i=2;i<=m;i++){
             for(int j=2;j<=n;j++){
                 f[i][j]=f[i][j-1]+f[i-1][j];
             }
         }
         return f[m][n];
    }
}

爬楼梯

class Solution {
    public int climbStairs(int n) {
       if(n < 2){
            return n;
        }
        int[] dp = new int[n + 1];
        dp[0] = 0;
        dp[1] = 1;
        dp[2] = 2;
        for(int i = 3; i <= n; i++){
            dp[i] = dp[i-1] + dp[i-2];
        }

        return  dp[n];
    }
}

子集

class Solution {
    List> result = new ArrayList>();
    public List> subsets(int[] nums) {
        List temp = new ArrayList();
        dfs(0, nums, temp);
        return result;
    }
    private void dfs(int level, int[] nums, List temp) {

        if (level == nums.length) {
            result.add(new ArrayList(temp));
            return;
        }

        temp.add(nums[level]);
        dfs(level + 1, nums, temp);
        temp.remove(temp.size() - 1);


        dfs(level + 1, nums, temp);
    }
}

你可能感兴趣的:(DataWhale task07)