Lintcode90 K Sum || solution 題解

【題目描述】

Given n unique integers, number k (1<=k<=n) and target.

Find all possible k integers where their sum is target.

給定n個不同的正整數,整數k(1<= k <= n)以及一個目標數字。

在這n個數裏面找出K個數,使得這K個數的和等於目標數字,你需要找出所有滿足要求的方案。

【題目鏈接】

www.lintcode.com/en/problem/k-sum-ii/

【題目解析】

此題與Lintcode89類似。只是整數k的取值不同。

找兩數之和是否爲target,可以使用遍歷。先來看看兩數之和爲target所對應的判斷條件—— xi+xj=targetx_i + x_j = targetxi+xj=target, 可進一步轉化爲 xi=targetxjx_i = target - x_jxi=targetxj, 其中 iii 和 jjj 爲數組中的下標。推理後便可將找兩數之和轉化爲了找一個數是否在數組中。

基本思路有了,現在就來看看怎麼實現,顯然需要額外的空間(哈希表)來保存已經處理過的 xjx_jxj(注意這裏並不能先初始化哈希表,否則無法排除兩個相同的元素相加爲target 的情況), 如果不滿足等式條件,那麼我們就往後遍歷,並把之前的元素加入到哈希表中,如果target減去當前索引後的值在哈希表中找到了,那麼就將哈希表中相應的索引返回即可。

【參考答案】

www.jiuzhang.com/solutions/k-sum-ii/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章