LeetCode 2974: Minimum Number Game (Sorting + Pair Swap)
LeetCode 2974SortingSimulationSource: https://leetcode.com/problems/minimum-number-game/
English
Sort the array first. Then for every adjacent pair, put the larger one first and the smaller one second. Because sorted order guarantees each pair already contains the smallest available numbers, swapping inside each pair constructs the required result directly.
import java.util.*;
class Solution {
public int[] numberGame(int[] nums) {
Arrays.sort(nums);
int[] ans = new int[nums.length];
for (int i = 0; i < nums.length; i += 2) {
ans[i] = nums[i + 1];
ans[i + 1] = nums[i];
}
return ans;
}
}import "sort"
func numberGame(nums []int) []int {
sort.Ints(nums)
ans := make([]int, len(nums))
for i := 0; i < len(nums); i += 2 {
ans[i] = nums[i+1]
ans[i+1] = nums[i]
}
return ans
}class Solution {
public:
vector<int> numberGame(vector<int>& nums) {
sort(nums.begin(), nums.end());
vector<int> ans(nums.size());
for (int i = 0; i < (int)nums.size(); i += 2) {
ans[i] = nums[i + 1];
ans[i + 1] = nums[i];
}
return ans;
}
};class Solution:
def numberGame(self, nums: list[int]) -> list[int]:
nums.sort()
ans = [0] * len(nums)
for i in range(0, len(nums), 2):
ans[i] = nums[i + 1]
ans[i + 1] = nums[i]
return ansvar numberGame = function(nums) {
nums.sort((a, b) => a - b);
const ans = new Array(nums.length);
for (let i = 0; i < nums.length; i += 2) {
ans[i] = nums[i + 1];
ans[i + 1] = nums[i];
}
return ans;
};中文
先对数组升序排序。然后每两个相邻数字作为一组,把较大值放前面、较小值放后面。由于排序后每组已经是当前最小可选数字,这样组内交换即可直接构造目标答案。
import java.util.*;
class Solution {
public int[] numberGame(int[] nums) {
Arrays.sort(nums);
int[] ans = new int[nums.length];
for (int i = 0; i < nums.length; i += 2) {
ans[i] = nums[i + 1];
ans[i + 1] = nums[i];
}
return ans;
}
}import "sort"
func numberGame(nums []int) []int {
sort.Ints(nums)
ans := make([]int, len(nums))
for i := 0; i < len(nums); i += 2 {
ans[i] = nums[i+1]
ans[i+1] = nums[i]
}
return ans
}class Solution {
public:
vector<int> numberGame(vector<int>& nums) {
sort(nums.begin(), nums.end());
vector<int> ans(nums.size());
for (int i = 0; i < (int)nums.size(); i += 2) {
ans[i] = nums[i + 1];
ans[i + 1] = nums[i];
}
return ans;
}
};class Solution:
def numberGame(self, nums: list[int]) -> list[int]:
nums.sort()
ans = [0] * len(nums)
for i in range(0, len(nums), 2):
ans[i] = nums[i + 1]
ans[i + 1] = nums[i]
return ansvar numberGame = function(nums) {
nums.sort((a, b) => a - b);
const ans = new Array(nums.length);
for (let i = 0; i < nums.length; i += 2) {
ans[i] = nums[i + 1];
ans[i + 1] = nums[i];
}
return ans;
};
Comments