package the_number_of_beautiful_subsets import ( "slices" ) func beautifulSubsets(nums []int, k int) int { seen := make(map[int]int) var dfs func(int) int dfs = func(i int) int { // BASE: Got to the end of the slice if i >= len(nums) { return 1 } // Initialize with skipping the current number foundSubsets := dfs(i + 1) // Check if we can include the current number if seen[nums[i]-k] == 0 && seen[nums[i]+k] == 0 { seen[nums[i]] += 1 foundSubsets += dfs(i + 1) seen[nums[i]] -= 1 } return foundSubsets } slices.Sort(nums) return dfs(0) - 1 }