首页 > 其他分享 >TODO-力扣-46. 全排列

TODO-力扣-46. 全排列

时间:2024-04-30 09:58:16浏览次数:31  
标签:排列 nums 46 复杂度 示例 力扣 ans permutation TODO

1.题目

题目地址(46. 全排列 - 力扣(LeetCode))

https://leetcode.cn/problems/permutations/

题目描述

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

 

示例 1:

输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

示例 2:

输入:nums = [0,1]
输出:[[0,1],[1,0]]

示例 3:

输入:nums = [1]
输出:[[1]]

 

提示:

  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • nums 中的所有整数 互不相同

2. 题解

2.1 全排列函数 next_permutation的使用(还有一个prev_permutation)

思路

next_permutation 可以按字典序排列获取下一个字典序稍大的组合, 如果不存在则返回

代码

  • 语言支持:C++

C++ Code:


class Solution {
public:
    vector<vector<int>> permute(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        vector<vector<int>> ans;
        do {
            ans.push_back(nums);
        } while (next_permutation(nums.begin(), nums.end()));
        return ans;
    }
};

复杂度分析

令 n 为数组长度。
由于它需要检查所有可能的排列来找到下一个排列。
在最坏的情况下,即当排列是按字典序排序的最后一个排列时,需要检查所有 n! 种可能的排列才能确定下一个排列

  • 时间复杂度:\(O(n!)\)
  • 空间复杂度:\(O(1)\)

2.2 回溯

思路

代码


复杂度分析

令 n 为数组长度。

  • 时间复杂度:\(O(n)\)
  • 空间复杂度:\(O(n)\)

标签:排列,nums,46,复杂度,示例,力扣,ans,permutation,TODO
From: https://www.cnblogs.com/trmbh12/p/18163144

相关文章

  • 力扣-852. 山脉数组的峰顶索引
    1.题目题目地址(852.山脉数组的峰顶索引-力扣(LeetCode))https://leetcode.cn/problems/peak-index-in-a-mountain-array/?envType=study-plan-v2&envId=primers-list题目描述符合下列属性的数组arr称为山脉数组:arr.length>=3存在i(0<i <arr.length-1)使得: ......
  • 力扣-258. 各位相加
    1.题目题目地址(258.各位相加-力扣(LeetCode))https://leetcode.cn/problems/add-digits/?envType=study-plan-v2&envId=primers-list题目描述给定一个非负整数num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 示例1:输入:num=38输出:2解释:各位......
  • 力扣-2586. 统计范围内的元音字符串数
    1.题目题目地址(2586.统计范围内的元音字符串数-力扣(LeetCode))https://leetcode.cn/problems/count-the-number-of-vowel-strings-in-range/?envType=study-plan-v2&envId=primers-list题目描述给你一个下标从0开始的字符串数组words和两个整数:left和right。如果字......
  • 力扣-1422. 分割字符串的最大得分
    1.题目题目地址(1422.分割字符串的最大得分-力扣(LeetCode))https://leetcode.cn/problems/maximum-score-after-splitting-a-string/?envType=study-plan-v2&envId=primers-list题目描述给你一个由若干0和1组成的字符串s,请你计算并返回将该字符串分割成两个非空子......
  • leetcode(力扣) 2866. 美丽塔 II
    原题链接暴力做法(时间复杂度O(n^2))每次选取下标i为峰值,进行n次,对每次取max就可以找打答案对于i左边的序列:需要满足序列是非递减的,同时每个值尽可能大所以满足:下标为j的位置上的数<=下标是(j,i]的最小的值(等于时取得最大值),同时需要保证j位......
  • 38天【代码随想录算法训练营34期】第九章 动态规划part01 (● 理论基础 ● 509. 斐波
    理论基础斐波那契数classSolution:deffib(self,n:int)->int:ifn==0:return0ifn==1:return1returnself.fib(n-1)+self.fib(n-2)爬楼梯classSolution:defclimbStairs(self,n:int)->i......
  • 力扣-231. 2 的幂
    1.题目题目地址(231.2的幂-力扣(LeetCode))https://leetcode.cn/problems/power-of-two/?envType=study-plan-v2&envId=primers-list题目描述给你一个整数n,请你判断该整数是否是2的幂次方。如果是,返回true;否则,返回false。如果存在一个整数x使得 n==2x,则认为......
  • 力扣-709. 转换成小写字母
    1.题目题目地址(-力扣(LeetCode))https://leetcode.cn/problems/to-lower-case/?envType=study-plan-v2&envId=primers-list题目描述给你一个字符串s,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。 示例1:输入:s="Hello"输出:"hello"示例2:输入:s="......
  • 力扣-1979. 找出数组的最大公约数
    1.题目介绍题目地址(c-力扣(LeetCode))https://leetcode.cn/problems/find-greatest-common-divisor-of-array/题目描述给你一个整数数组nums,返回数组中最大数和最小数的最大公约数。两个数的 最大公约数是能够被两个数整除的最大正整数。 示例1:输入:nums=[2,5,6......
  • 力扣-566. 重塑矩阵
    1.题目题目地址(566.重塑矩阵-力扣(LeetCode))https://leetcode.cn/problems/reshape-the-matrix/题目描述在MATLAB中,有一个非常有用的函数reshape,它可以将一个 mxn矩阵重塑为另一个大小不同(rxc)的新矩阵,但保留其原始数据。给你一个由二维数组mat表示的 mxn......