167.两数之和-ii-输入有序数组

时游小于 1 分钟LeetCode

167.两数之和-ii-输入有序数组

/*
 * @lc app=leetcode.cn id=167 lang=typescript
 *
 * [167] 两数之和 II - 输入有序数组
 */

// @lc code=start
// 双指针解法
// function twoSum(numbers: number[], target: number): number[] {
// 	// numbers是递增数组,且元素不重复
// 	let l: number = 0;
// 	let r: number = numbers.length - 1;
// 	let res: number[] = [];
// 	// 双指针
// 	while (l < r) {
// 		if (numbers[l] + numbers[r] > target) {
// 			r--;
// 		} else if (numbers[l] + numbers[r] < target) {
// 			l++;
// 		} else {
// 			res = [l + 1, r + 1];
// 			break;
// 		}
// 	}
// 	return res;
// }

function twoSum(numbers: number[], target: number): number[] {
	let map = new Map();
	for (let i = 0; i < numbers.length; i++) {
		map.set(numbers[i], i);
	}

	let i = 0;
	let res: number[] = [];
	while (i < numbers.length) {
		if (map.has(target - numbers[i])) {
			res = [i + 1, map.get(target - numbers[i]) + 1];
			break;
		}
		i++;
	}
	return res;
}

twoSum([-5, -3, 0, 2, 4, 6, 8], 5);
// @lc code=end

上次编辑于:
贡献者: 15327360835
Loading...