Hướng dẫn given an integer array nums of unique elements, return all possible subsets python - đã cho một số mảng số nguyên gồm các phần tử duy nhất, trả về tất cả các tập con có thể có python

Đưa ra một loạt các số nguyên ARR [], nhiệm vụ là tìm tất cả các tập hợp con của nó. Tập hợp con không thể chứa các phần tử trùng lặp, do đó, bất kỳ tập hợp con lặp lại chỉ nên được xem xét một lần trong đầu ra.arr[], The task is to find all its subsets. The subset can not contain duplicate elements, so any repeated subset should be considered only once in the output.

Examples:  

Đầu vào: & nbsp; S = {1, 2, 2} đầu ra: & nbsp; {}, {1}, {2}, {1, 2}, {2, 2}, {1, 2, 2} Giải thích: Tổng số tập hợp của tập hợp đã cho là - {}, {1}, {2} , {2}, {1, 2}, {1, 2}, {2, 2}, {1, 2, 2} ở đây {2} và {1, 2} được lặp lại hai lần để chúng chỉ được coi là một lần đầu ra S = {1, 2, 2}
Output:  {}, {1}, {2}, {1, 2}, {2, 2}, {1, 2, 2}
Explanation: The total subsets of given set are – {}, {1}, {2}, {2}, {1, 2}, {1, 2}, {2, 2}, {1, 2, 2}
Here {2} and {1, 2} are repeated twice so they are considered only once in the output

Đầu vào: & nbsp; S = {1, 2} đầu ra: & nbsp; {}, {1}, {2}, {1, 2} Giải thích: Tổng số tập hợp của tập hợp đã cho là - {}, {1}, {2}, {1, 2} S = {1, 2}
Output:  {}, {1}, {2}, {1, 2}
Explanation: The total subsets of given set are – {}, {1}, {2}, {1, 2}

Điều kiện tiên quyết: Bộ sức mạnhPower Set

Cách tiếp cận: Dưới đây là ý tưởng giải quyết vấn đề:Below is the idea to solve the problem:

Ý tưởng là sử dụng một mẫu mặt nạ bit để tạo ra tất cả các kết hợp như được thảo luận trong bài. Để tránh in các tập hợp con trùng lặp xây dựng một chuỗi ra khỏi tập hợp con đã cho sao cho các tập hợp con có các phần tử tương tự sẽ dẫn đến cùng một chuỗi. Duy trì một danh sách các chuỗi độc đáo như vậy và cuối cùng giải mã tất cả các chuỗi như vậy để in các yếu tố riêng lẻ của nó.bit-mask pattern to generate all the combinations as discussed in post. To avoid printing duplicate subsets construct a string out of given subset such that subsets having similar elements will result in same string. Maintain a list of such unique strings and finally decode all such string to print its individual elements.

Hình minh họa :

S = {1, 2, 2}

Các chữ số nhị phân từ 0 đến 7 là

0 -> 000 & nbsp; & nbsp; -> Số được hình thành không có setBits & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; -> {} 1 -> 001 & nbsp; & nbsp; -> Số được hình thành với setbit ở vị trí 0 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; -> {1} 2 -> 010 & nbsp; & nbsp; -> số được hình thành với setbit ở vị trí 1 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; -> {2} 3 -> 011 & nbsp; & nbsp; -> Số được hình thành với setbit ở vị trí 0 & nbsp; và 1 & nbsp; & nbsp; -> {1, 2} 4 -> 100 & nbsp; & nbsp; -> số được hình thành với setbit ở vị trí 2 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; -> & nbsp; {2} 5 -> 101 & nbsp; & nbsp; -> số được hình thành với setbit ở vị trí 0 và 2 & nbsp; & nbsp; & nbsp; -> {1, 2} 6 -> 110 & nbsp; & nbsp; -> số được hình thành với setbit ở vị trí 1 và 2 & nbsp; & nbsp; & nbsp; -> {2, 2} 7 -> 111 & nbsp; & nbsp; -> Số được hình thành với setbit ở vị trí 0, 1 và 2 & nbsp; -> {1, 2, 2}
1 –> 001    –> number formed with setbit at position 0                –> { 1 }
2 –> 010    –> number formed with setbit at position 1                –> { 2 }
3 –> 011    –> number formed with setbit at position 0  and 1     –> { 1 , 2 }
4 –> 100    –> number formed with setbit at position 2                –>  { 2 }
5 –> 101    –> number formed with setbit at position 0 and 2      –> { 1 , 2}
6 –> 110    –> number formed with setbit at position 1 and 2      –> { 2 , 2}
7 –> 111    –> number formed with setbit at position 0 , 1 and 2  –> {1 , 2 , 2}

Sau khi xóa các bản sao kết quả cuối cùng sẽ là {}, {1}, {2}, {1, 2}, {2, 2}, {1, 2, 2}

Lưu ý: Phương thức này sẽ chỉ hoạt động trên các mảng được sắp xếp. & NBSP;This method will only work on sorted arrays. 

Thực hiện theo các bước dưới đây để thực hiện ý tưởng:

  • Khởi tạo một biến pow_set_size khi 2 tăng kích thước mảng và một vectơ của vectơ ANS để lưu trữ tất cả các tập hợp con.pow_set_size as 2 raise to size of array and a vector of vector ans to store all subsets.
  • Lặp lại trên tất cả các bitmasks từ 0 đến pow_set_size & nbsp; - 1.pow_set_size  – 1.
    • Đối với mỗi bitmask bao gồm các phần tử của mảng các chỉ số trong đó các bit được đặt thành một tập hợp con & nbsp; vector.subset vector.
    • Nếu tập hợp con này không tồn tại thì hãy đẩy tập hợp con trong vectơ ANS.push the subset in the ans vector.
  • Trả lại ans.ans.

Dưới đây là việc thực hiện phương pháp trên: & nbsp; & nbsp;

C++14

#include

using namespace std;

vector findPowerSet[vector& nums]

#include 0

#include 1int #include 3

#include 1#include 5int #include 7#include 8#include 9

#include 1using1

#include 1vector

Bài Viết Liên Quan

Chủ Đề