val list
:List
[Int
] = List
(1,
4,
20,
3,
10,
5)
//Solution 1 :
val sumList
= list.
foldLeft(List
(0),
0)((l, r
) => (l.
_1
:+
(l.
_2+r
), l.
_2 + r
)).
_1.
drop(1) //Brute force approach
sumList.zipWithIndex.combinations(2).toList.collectFirst({
case i
if i
(1).
_1 - i
(0).
_1
== sum
=> i
case Some
(List
(x, y
)) => println
("elements which form the given sum are => "+ list.
drop(x.
_2+
1).
take(y.
_2-x.
_2
)) case _ => println
("couldn't find elements which satisfy the given condition") }
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewoKdmFsIGxpc3Q6TGlzdFtJbnRdID0gTGlzdCgxLCA0LCAyMCwgMywgMTAsIDUpCiAgdmFsIHN1bSA9IDMzCgogIC8vU29sdXRpb24gMSA6CiAgdmFsIHN1bUxpc3QgPSBsaXN0LmZvbGRMZWZ0KExpc3QoMCksIDApKChsLCByKSA9PiAobC5fMSA6KyAobC5fMityKSwgbC5fMiArIHIpKS5fMS5kcm9wKDEpCiAgLy9CcnV0ZSBmb3JjZSBhcHByb2FjaAogIHN1bUxpc3QuemlwV2l0aEluZGV4LmNvbWJpbmF0aW9ucygyKS50b0xpc3QuY29sbGVjdEZpcnN0KHsKICAgIGNhc2UgaSBpZiBpKDEpLl8xIC0gaSgwKS5fMSA9PSBzdW0gPT4gaQogIH0pIG1hdGNoIHsKICAgIGNhc2UgU29tZShMaXN0KHgsIHkpKSA9PiBwcmludGxuKCJlbGVtZW50cyB3aGljaCBmb3JtIHRoZSBnaXZlbiBzdW0gYXJlID0+ICIrIGxpc3QuZHJvcCh4Ll8yKzEpLnRha2UoeS5fMi14Ll8yKSkKICAgIGNhc2UgXyA9PiBwcmludGxuKCJjb3VsZG4ndCBmaW5kIGVsZW1lbnRzIHdoaWNoIHNhdGlzZnkgdGhlIGdpdmVuIGNvbmRpdGlvbiIpCiAgfQogIAp9