Subsets

HeeSeong·2021년 9월 4일
0

LeetCode

목록 보기
37/38
post-thumbnail

🔗 문제 링크

https://leetcode.com/problems/subsets/


🔍 문제 설명


Given an integer array nums of unique elements, return all possible subsets (the power set).

The solution set must not contain duplicate subsets. Return the solution in any order.


⚠️ 제한사항


  • 1<=nums.length<=101 <= nums.length <= 10

  • 10<=nums[i]<=10-10 <= nums[i] <= 10

  • All the numbers of nums are unique.



🗝 풀이 (언어 : Java)


앞의 문제는 순열을 구하는 문제였는데, 이 문제는 부분 집합을 구하는 문제이다. 각 케이스는 조합처럼 순서가 없는 경우의 수를 구해야 한다. 어려웠는데 다음에 다시 풀때까지 익숙해져야할 것 같다.

import java.util.ArrayList;
import java.util.List;

class Solution {
    private void dfs(List<List<Integer>> answer, List<Integer> oneCase, int[] nums, int limit) {
        answer.add(new ArrayList<>(oneCase));
        for (int i = limit; i < nums.length; i++) {
            oneCase.add(nums[i]);
            dfs(answer, oneCase, nums, i + 1);
            oneCase.remove(oneCase.size() - 1);
        }
    }

    public List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>> answer = new ArrayList<>();
        dfs(answer, new ArrayList<>(), nums, 0);
        return answer;
    }
}
profile
끊임없이 성장하고 싶은 개발자

0개의 댓글