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