- 极大极小游戏">A: 极大极小游戏
- 划分数组使最大差为 K">B: 划分数组使最大差为 K
- 替换数组中的元素">C: 替换数组中的元素
- 设计一个文本编辑器">D:设计一个文本编辑器
- 复盘
不积跬步,无以至千里;不积小流,无以成江海
时间:2020-6-5 https://leetcode.cn/contest/weekly-contest-296 讨论:https://leetcode.cn/circle/discuss/twBVIo/ 代码地址:
A: 极大极小游戏
思路:
关键点:
function minMaxGame(nums: number[]): number {while(nums.length > 1) {let n = nums.length;let tmp = [];for (let i = 0; i < n; i += 2) {if (i % 4 == 2) {tmp.push(Math.max(nums[i], nums[i + 1]));} else {tmp.push(Math.min(nums[i], nums[i + 1]));}}nums = tmp;}return nums[0];};
总结:
B: 划分数组使最大差为 K
思路:
关键点:
function partitionArray(nums: number[], k: number): number {if (!nums.length) return 0;nums.sort((a, b) => a - b);let ans = 1;let prev = nums[0] + k;for (let num of nums) {if (num <= prev) continue;prev = num + k;ans++;}return ans;};
总结:
C: 替换数组中的元素
思路:
关键点:
function arrayChange(nums: number[], operations: number[][]): number[] {const n = nums.length;let hashMap = new Map(nums.map((v, i) => [v, i]));for (let [oldVal, newVal] of operations) {let idx = hashMap.get(oldVal);hashMap.delete(oldVal);hashMap.set(newVal, idx);}let ans = new Array(n);for (let [val, key] of hashMap.entries()) {ans[key] = val;}return ans;};
总结:
D:设计一个文本编辑器
思路:
关键点:
总结:
复盘

