vector<int> twoSum(vector<int>& nums, int target) {
int n = nums.size();
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (nums[i] + nums[j] == target) {
return {i, j};
}
}
}
return {};
}
public int[] twoSum(int[] nums, int target) {
int n = nums.length;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (nums[i] + nums[j] == target) {
return new int[]{i, j};
}
}
}
return new int[0];
}
def two_sum(nums: list[int], target: int) -> list[int]:
n = len(nums)
for i in range(n):
for j in range(i + 1, n):
if nums[i] + nums[j] == target:
return [i, j]
return []
function twoSum(nums: number[], target: number): number[] {
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] === target) {
return [i, j];
}
}
}
return [];
}
vector<int> twoSum(vector<int>& nums, int target) {
int n = nums.size();
vector<int> idx(n);
iota(idx.begin(), idx.end(), 0);
sort(idx.begin(), idx.end(), [&](int a, int b) { return nums[a] < nums[b]; });
int left = 0;
int right = n - 1;
while (left < right) {
long long sum = (long long)nums[idx[left]] + nums[idx[right]];
if (sum == target) return {idx[left], idx[right]};
if (sum < target) left++;
else right--;
}
return {};
}
public int[] twoSum(int[] nums, int target) {
int n = nums.length;
Integer[] idx = new Integer[n];
for (int i = 0; i < n; i++) idx[i] = i;
Arrays.sort(idx, (a, b) -> Integer.compare(nums[a], nums[b]));
int left = 0;
int right = n - 1;
while (left < right) {
long sum = (long) nums[idx[left]] + nums[idx[right]];
if (sum == target) return new int[]{idx[left], idx[right]};
if (sum < target) left++;
else right--;
}
return new int[0];
}
def two_sum(nums: list[int], target: int) -> list[int]:
idx = sorted(range(len(nums)), key=lambda i: nums[i])
left = 0
right = len(nums) - 1
while left < right:
total = nums[idx[left]] + nums[idx[right]]
if total == target:
return [idx[left], idx[right]]
if total < target:
left += 1
else:
right -= 1
return []
function twoSum(nums: number[], target: number): number[] {
const idx = nums.map((_, i) => i).sort((a, b) => nums[a] - nums[b]);
let left = 0;
let right = nums.length - 1;
while (left < right) {
const sum = nums[idx[left]] + nums[idx[right]];
if (sum === target) return [idx[left], idx[right]];
if (sum < target) left++;
else right--;
}
return [];
}
vector<int> twoSum(vector<int>& nums, int target) {
unordered_map<int, int> seen;
for (int i = 0; i < (int)nums.size(); i++) {
int need = target - nums[i];
auto it = seen.find(need);
if (it != seen.end()) {
return {it->second, i};
}
seen[nums[i]] = i;
}
return {};
}
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> seen = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int need = target - nums[i];
if (seen.containsKey(need)) {
return new int[]{seen.get(need), i};
}
seen.put(nums[i], i);
}
return new int[0];
}
def two_sum(nums: list[int], target: int) -> list[int]:
seen: dict[int, int] = {}
for i, x in enumerate(nums):
need = target - x
if need in seen:
return [seen[need], i]
seen[x] = i
return []
function twoSum(nums: number[], target: number): number[] {
const seen = new Map<number, number>();
for (let i = 0; i < nums.length; i++) {
const need = target - nums[i];
if (seen.has(need)) {
return [seen.get(need)!, i];
}
seen.set(nums[i], i);
}
return [];
}
optional<pair<int, int>> twoSum(const vector<int>& nums, long long target) {
int n = nums.size();
if (n < 2 || target < 2LL * INT_MIN || target > 2LL * INT_MAX) return nullopt;
unordered_map<int, int> seen;
seen.reserve(2 * n);
for (int i = 0; i < n; i++) {
int x = nums[i];
long long need = target - x;
if (need < INT_MIN || need > INT_MAX) continue;
auto it = seen.find((int)need);
if (it != seen.end()) return pair<int, int>{it->second, i};
seen.emplace(x, i);
}
return nullopt;
}
public static int[] twoSum(int[] nums, long target) { // null if no pair
if (nums == null || nums.length < 2) return null;
Map<Integer, Integer> seen = new HashMap<>(nums.length * 2);
for (int i = 0; i < nums.length; i++) {
int x = nums[i];
long need = target - x;
if (need < Integer.MIN_VALUE || need > Integer.MAX_VALUE) continue;
Integer j = seen.get((int) need);
if (j != null) return new int[]{j, i};
seen.put(x, i);
}
return null;
}
def two_sum(nums: Sequence[int], target: int) -> tuple[int, int] | None:
if not isinstance(target, int) or len(nums) < 2:
return None
seen: dict[int, int] = {}
for i in range(len(nums)):
x = nums[i]
if not isinstance(x, int):
continue
j = seen.get(target - x)
if j is not None: return (j, i)
seen[x] = i
return None
function twoSum(nums: ArrayLike<number>, target: number): [number, number] | null {
if (!Number.isSafeInteger(target) || nums.length < 2) return null;
const seen = new Map<number, number>();
for (let i = 0; i < nums.length; i++) {
const x = nums[i];
if (!Number.isSafeInteger(x)) continue;
const j = seen.get(target - x);
if (j !== undefined) return [j, i];
seen.set(x, i);
}
return null;
}