Count subsets
package _interview_question /** * https://leetcode.com/discuss/interview-question/275785/facebook-phone-screen-count-subsets * * Input: Given an array A of -positive -sorted -no duplicate -integer A positive integer k Output: Count of all such subsets of A, Such that for any such subset S, Min(S) + Max(S) = k subset should contain atleast two elements input: {1,2,3,4,5} * */ class Solution { private val map = HashMap<Int, Int>() private var result = 0.0 fun subSetMinMaxEqualK(nums: IntArray, k: Int):Int { //1.backtracking, Time complexity: O(2^n), Space complexity:O(n) //dfs(0, nums, ArrayList<Int>(), k) //2.use map, just like 2 sum //Time complexity: O(nlogn), Space complexity:O(n) nums.sort() for (i in nums.indices) { val needFind = k - nums[i] if (map.containsKey(needFind)) { val value = i-map.get(needFind)!!-1 //1,2,3,4,5; k = 5, {1 4} there are 4 cases 2^2 result += Math.pow(2.0,value.toDouble()) } map.put(nums[i], i) } return result.toInt() } private fun dfs(n: Int, nums: IntArray, cur: ArrayList<Int>, target: Int) { val temp = ArrayList<Int>(cur) val min = temp.min() ?: 0 val max = temp.max() ?: 0 val value = min + max if (value == target) { result++ } for (i in n until nums.size) { cur.add(nums[i]) dfs(i + 1, nums, cur, target) cur.removeAt(cur.size - 1) } } }
标签:
algorithm
, interview_question
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)