全部评论
回溯算法
有要一起刷题的小伙伴么,每天一个算法题,坚持30天你就会看到不一样的自己。
楼主你好,请问你是实习、校招还是社招?
位运算?
import java.util.ArrayList; import java.util.List; public class Solution { public List<List<Integer>> getArrange(int n){ boolean[] vis = new boolean[n+1]; List<List<Integer>> rsl = new ArrayList<>(); dfs(new ArrayList<>(), rsl, vis, 1, n, 1); return rsl; } public void dfs(List<Integer> rs, List<List<Integer>> rsl, boolean[] vis, int i, int n, int depth){ if(depth == n + 1){ if(rs.size()>=1) rsl.add(new ArrayList<>(rs)); return; } for(int j=i;j<=n;j++){ if(!vis[j]){ vis[j] = true; rs.add(j); dfs(rs, rsl, vis, j+1, n, depth + 1); vis[j] = false; rs.remove(rs.size()-1); dfs(rs, rsl, vis, j+1, n , depth+1); } } } public static void main(String[] args) { Solution s = new Solution(); System.out.println(s.getArrange(3)); } }
LeetCode 78
class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: n = len(nums) def dfs(tmp,begin): res.append(tmp[:]) for i in range(begin,n): dfs(tmp+[nums[i]],i+1) res = [] dfs([],0) return res
位运算 子集枚举
阿里数据中台招java研发实习,有兴趣同学加v:13031166600 也可发送简历至xinan.cj@alibaba-inc.com
这是子集吧,leetcode有原题。给你个思路吧 {1}的子集是{}和 {1},{1.2}的子集是{} {1} {2} {1.2}其实就是1的子集每加入一个二加上1原来的子集。找下规律就能出来了😂
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享