245. Find Kth Smallest Square In Sorted Array
Asked in
Find Kth Smallest Square In Sorted Array
Given a sorted list of integers nums and an integer k, find the kth smallest square value among all elements of the list.
For every element nums[i], its square value is nums[i] * nums[i]. Duplicate square values are counted separately.

Class

KthSmallestSquareFinder

Method

Find Kth Smallest Square

long kthSmallestSquare(List<Integer> nums, int k)
  • Returns the kth smallest square value formed from the elements of nums.
  • The list nums is sorted in non-decreasing order.
  • Each index contributes one square value, so duplicate values are counted multiple times.

Input

  • nums: A sorted list of integers.
  • k: The 1-based position of the square value to return after sorting all square values.

Output

  • Return a long representing the kth smallest square value.

Constraints

  • 1 ≤ nums.size() ≤ 100,000
  • -1,000,000,000 ≤ nums[i] ≤ 1,000,000,000
  • nums[i] ≤ nums[i + 1] for every valid index i
  • 1 ≤ k ≤ nums.size()

Deterministic Rules

  • Square values are compared by numeric value.
  • If the same square value appears multiple times, every occurrence is counted separately.
  • The answer is the value present at position k after sorting all square values in non-decreasing order.

Examples

Example 1

kthSmallestSquare(nums = List.of(-6, -4, -1, 3, 5), k = 2)
  • Square values are 36, 16, 1, 9, 25.
  • After sorting them, we get 1, 9, 16, 25, 36.
  • The 2nd smallest square is 9.
Output: 9

Example 2

kthSmallestSquare(nums = List.of(-5, -2, -2, 0, 4), k = 4)
  • Square values are 25, 4, 4, 0, 16.
  • After sorting them, we get 0, 4, 4, 16, 25.
  • The 4th smallest square is 16.
Output: 16

Example 3

kthSmallestSquare(nums = List.of(-3, -3, 3, 3), k = 3)
  • Every element has square value 9.
  • Duplicate square values are counted separately.
  • The 3rd smallest square is 9.
Output: 9


Please use Laptop/Desktop or any other large screen to add/edit code.