1. 程式人生 > 其它 >Java 相似度 餘弦函式 字串

Java 相似度 餘弦函式 字串

題目:給定一個可包含重複數字的序列nums,按任意順序返回所有不重複的全排列。

示例 1:

輸入:nums = [1,1,2]
輸出:
[[1,1,2],
 [1,2,1],
 [2,1,1]]

示例 2:

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

程式碼1://未作修改直接接46題,發現效率太低,每次都在排列完才進行去重。

classSolution{ publicList<List<Integer>>permuteUnique(int[]nums){ varlist=newArrayList<List<Integer>>(); vararr=newArrayList<Integer>(); backTrack(0,nums,arr,list); returnlist; }
publicstaticvoidbackTrack(intt,int[]nums,ArrayList<Integer>arr,ArrayList<List<Integer>>list){ if(t>=nums.length){ if(!list.contains(arr)){ vartemp=newArrayList<Integer>(arr); list.add(temp);} } else{ for(inti=t;i<nums.length;i++){ swap(nums,t,i); arr.add(nums[t]); backTrack(t+1,nums,arr,list); arr.remove(arr.size()-1); swap(nums,t,i); } } } publicstaticvoidswap(int[]nums,inti,intj){ inttemp=nums[i]; nums[i]=nums[j]; nums[j]=temp; } }