不积跬步,无以至千里;不积小流,无以成江海

时间:2020-6-5 https://leetcode.cn/contest/weekly-contest-296 讨论:https://leetcode.cn/circle/discuss/twBVIo/ 代码地址:

A: 极大极小游戏

思路:
关键点:

  1. function minMaxGame(nums: number[]): number {
  2. while(nums.length > 1) {
  3. let n = nums.length;
  4. let tmp = [];
  5. for (let i = 0; i < n; i += 2) {
  6. if (i % 4 == 2) {
  7. tmp.push(Math.max(nums[i], nums[i + 1]));
  8. } else {
  9. tmp.push(Math.min(nums[i], nums[i + 1]));
  10. }
  11. }
  12. nums = tmp;
  13. }
  14. return nums[0];
  15. };

总结:

B: 划分数组使最大差为 K

思路:
关键点:

  1. function partitionArray(nums: number[], k: number): number {
  2. if (!nums.length) return 0;
  3. nums.sort((a, b) => a - b);
  4. let ans = 1;
  5. let prev = nums[0] + k;
  6. for (let num of nums) {
  7. if (num <= prev) continue;
  8. prev = num + k;
  9. ans++;
  10. }
  11. return ans;
  12. };

总结:

C: 替换数组中的元素

思路:
关键点:

  1. function arrayChange(nums: number[], operations: number[][]): number[] {
  2. const n = nums.length;
  3. let hashMap = new Map(nums.map((v, i) => [v, i]));
  4. for (let [oldVal, newVal] of operations) {
  5. let idx = hashMap.get(oldVal);
  6. hashMap.delete(oldVal);
  7. hashMap.set(newVal, idx);
  8. }
  9. let ans = new Array(n);
  10. for (let [val, key] of hashMap.entries()) {
  11. ans[key] = val;
  12. }
  13. return ans;
  14. };

总结:

D:设计一个文本编辑器

思路:
关键点:

总结:

复盘

截屏2022-06-05 17.28.41.png