華為OD機(jī)試- 符合要求的元組的個(gè)數(shù)
給定一個(gè)整數(shù)數(shù)組 nums、一個(gè)數(shù)字k,一個(gè)整數(shù)目標(biāo)值 target,請問nums中是否存在k個(gè)元素使得其相加結(jié)果為target,請輸出所有符合條件且不重復(fù)的k元組的個(gè)數(shù)
數(shù)據(jù)范圍
2 <= nums.length <= 200
-10^9 < numslil < 10^9
-10^9 < target < 10^9
2<=k<=100
輸入描述
第一行是nums取值: 2 7 11 15
第二行是k的取值: 2
第三行是target取值: 9
輸出描述
輸出第一行是符合要求的元組個(gè)數(shù): 1補(bǔ)充說明: [2,7]滿足,輸出個(gè)數(shù)是1
示例1:
輸入
-1 0 1 2 -1 -4
3
0
輸出
2
說明
[-1,0,1],[-1,-1,2]滿足條件
思路
1:也是一個(gè)非常經(jīng)典的題目了,二數(shù)之和,三數(shù)之和,四數(shù)之和,K數(shù)之和。。。
2:兩數(shù)之和、三數(shù)之和、四數(shù)之和、K數(shù)之和_LoongTech的博客-CSDN博客
3:上面這個(gè)大佬講的很細(xì),并且都附了原題的鏈接。
4:然而,本題也做了改編,題目給出的并不是正整數(shù)數(shù)組,但是核心的思路并未改變。
三數(shù)之和,選取最小的一個(gè)值,然后通過雙指針找到剩余兩個(gè)數(shù)。
四數(shù)之和,選取最小的兩個(gè)值,然后通過雙指針找到剩余兩個(gè)數(shù)。
K數(shù)之和,選取最小的K-2個(gè)值,然后通過雙指針找到剩余兩個(gè)數(shù)。
Java 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131339271
Python實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131349964
C++ 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131349970
JavaScript實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/131349959
C實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/129190260