• 排列


      1-n的全排列

    public void permutation(int n,int[] arr,int cur){
            if(cur==n){
                System.out.println(Arrays.toString(arr));
                return;
            }
            for(int i=1;i<=n;i++){
                boolean ok=true;
                for(int j=0;j<cur;j++){
                    if(arr[j]==i) ok=false;
                }
                if(ok){
                    arr[cur]=i;
                    permutation(n,arr,cur+1);
                }
            }
        }

     可重集合的排列,

    ublic void permutation(int[] nums,int[] arr,int cur){//nums有序
            if(cur==nums.length){
                System.out.println(Arrays.toString(arr));
                return;
            }
            for(int i=0;i<nums.length;i++){
                if(i>0&&nums[i]==nums[i-1]) continue;
                int c1=0;
                int c2=0;
                for(int j=0;j<cur;j++){
                    if(arr[j]==nums[i]) c1++;
                }
                for(int j=0;j<nums.length;j++){
                    if(nums[i]==nums[j]) c2++;
                }
                
                if(c1<c2){
                    arr[cur]=nums[i];
                    permutation(nums,arr,cur+1);
                }
            }
        }

     3.不去重复元素

      ArrayList<String> res=new ArrayList<String>();
        public void swap(char[] s,int i,int j){
            char ch=s[j];
            s[j]=s[i];
            s[i]=ch;
        }
        public void helper(char[] s,int cur){
            int len=s.length;
            if(cur==len-1){
                res.add(new String(s));
                return;
            }
            for(int i=cur;i<len;i++){
                swap(s,i,cur);
                helper(s,cur+1);
                swap(s,i,cur);
            }
        }
        public ArrayList<String> getPermutation(String A) {    
            char[] s=A.toCharArray();
            Arrays.sort(s);
            helper(s,0);
            Collections.sort(res);
            Collections.reverse(res);
            return res;
        }
  • 相关阅读:
    Leetcode#179 Largest Number
    Leetcode#155 Min Stack
    Leetcode#14 Longest Common Prefix
    Leetcode#101 Symmetric Tree
    Leetcode#172 Fractorial Trailing Zero
    Leetcode#28 Implement strStr()
    Leetcode#46 Permutations
    Leetcode#48 Rotate Image
    Leetcode#134 Gas station
    Leetcode#137 Single Number II
  • 原文地址:https://www.cnblogs.com/wqkant/p/6809816.html
Copyright © 2020-2023  润新知