java 實現全排列


    public List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        f1(0, nums, res);
        return res;
    }

    private void f1(int i, final int[] nums, List<List<Integer>> res) {
        if (i == nums.length) {
            //記錄當前解
            List<Integer> one = new ArrayList<>();
            for (int num : nums) {
                one.add(num);
            }
            res.add(one);
        } else {
            /*當前元素和它后面的每個元素交換,
             *交換后進入下一個元素的交換,返回后再換回來
             */
            for (int j = i; j < nums.length; j++) {
                if (i != j) {
                    //用異或操作交換,省去中間變量
                    nums[i] ^= nums[j];
                    nums[j] ^= nums[i];
                    nums[i] ^= nums[j];
                }
                f1(i + 1, nums, res);
                if (i != j) {
                    nums[i] ^= nums[j];
                    nums[j] ^= nums[i];
                    nums[i] ^= nums[j];
                }
            }
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM