Program to check we can find three unique elements ose sum is same as k or not Python


Suppose we have a list of numbers called nums and another value k, we have to check whether we can find three unique elements in the list whose sum is k.

So, if the input is like nums = [11, 4, 6, 10, 5, 1] k = 20, then the output will be True, as we have numbers [4,6,10] whose sum is 20.

To solve this, we will follow these steps −

  • sort the list nums

  • l := 0, r := size of nums − 1

  • while l < r − 1, do

    • t := k − nums[l] − nums[r]

    • if nums[r − 1] < t, then

      • l := l + 1

      • come out from the loop

    • for m in range l + 1 to r, do

      • if nums[m] > t, then

        • r := r − 1

        • come out from the loop

      • if nums[m] is same as t, then

        • return True

  • return False

Let us see the following implementation to get better understanding −

Example

 Live Demo

class Solution:
   def solve(self, nums, k):
      nums.sort()
      l, r = 0, len(nums) − 1
      while l < r − 1:
         t = k − nums[l] − nums[r]
         if nums[r − 1] < t:
            l += 1
            continue
         for m in range(l + 1, r):
            if nums[m] > t:
               r −= 1
               break
            if nums[m] == t:
               return True
      return False
ob1 = Solution()
nums = [11, 4, 6, 10, 5, 1]
k = 20
print(ob1.solve(nums, k))

Input

[11, 4, 6, 10, 5, 1], 20

Output

True

Updated on: 21-Oct-2020

58 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements