zoukankan      html  css  js  c++  java
  • Permutations

    题目:Given a collection of numbers, return all possible permutations.

    For example,
    [1,2,3] have the following permutations:
    [1,2,3][1,3,2][2,1,3][2,3,1][3,1,2], and [3,2,1].

    思路:

    使用回溯法,一开始先进第一个,当然最后需要弹出来,回溯的必然操作,然后,我需要和我一开始的start进行交换,因为我有许多种可能性。

    其实题目隐含着第几次交换的计算,就和真正人计算排列组合时候,从左往右开始数数,选择某一个,先是和第一个交换,这个时候结束了,生成新的数组或者字符串s’,下一次交换就是对s’进行交换啦。当然是从s’的start开始,当然题目中都是用nums进行表示的,为了理解,我写成nums。

    本题不算特别难。

    代码:

    class Solution {
    public:
        vector<vector<int>> permute(vector<int>& nums) {
            vector<vector<int> >result;
    
            permuteHelper(0,nums,result);
            return result;
        }
    
        void permuteHelper(int start,vector<int>& nums,vector<vector<int> >&result){
            if(start==nums.size()){
                result.push_back(nums);
                return;
            }
            for(int i=start;i<nums.size();i++){
                swap(nums[i],nums[start]);
                permuteHelper(start+1,nums,result);
                swap(nums[i],nums[start]);
            }
        }
    };


  • 相关阅读:
    grunt in webstorm
    10+ Best Responsive HTML5 AngularJS Templates
    响应式布局
    responsive grid
    responsive layout
    js event bubble and capturing
    Understanding Service Types
    To add private variable to this Javascript literal object
    Centering HTML elements larger than their parents
    java5 新特性
  • 原文地址:https://www.cnblogs.com/jsrgfjz/p/8519877.html
Copyright © 2011-2022 走看看