Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

学习笔记

重写了归并排序的两个版本模板:

const mergeSort = (nums, compare = (a, b) => a - b) => {
  // 如果数组长度为1,无需排序,直接返回即可
  if (nums.length === 1) {
    return nums;
  }

  const mid = nums.length >> 1; // 计算中间索引
  // 将数组拆分成两段,分别进行排序
  const left = nums.slice(0, mid);
  const right = nums.slice(mid);

  // 将子数组不断拆分,并将每个子数组都进行排序好,之后合并返回
  return merge(mergeSort(left, compare), mergeSort(right, compare), compare);
};

// 将两个子数组排序、合并
const merge = (left, right, compare) => {
  let result = []; // 存储排序后的结果

  // 将两个子数组按照compare的结果排序,直到其中一个被清空
  while (left.length && right.length) {
    result.push(compare(left[0], right[0]) < 0 ? left.shift() : right.shift());
  }

  // 将数组剩余元素存入result,由于left和right已经被排序,因此无需再进行排序
  result.splice(result.length, 0, ...left, ...right);

  return result;
};
const mergeSort = (nums, left, right, compare = (a, b) => a - b) => {
  if (right <= left) {
    return;
  }

  const mid = (left + right) >> 1;
  mergeSort(nums, left, mid, compare);
  mergeSort(nums, mid + 1, right, compare);

  merge(nums, left, right, mid, compare);
};

const merge = (nums, left, right, mid, compare) => {
  let temp = [];
  let i = left;
  let j = mid + 1;
  let k = 0;

  while (i <= mid && j <= right) {
    temp[k++] = compare(nums[i], nums[j]) < 0 ? nums[i++] : nums[j++];
  }

  while (i <= mid) {
    temp[k++] = nums[i++];
  }

  while (j <= right) {
    temp[k++] = nums[j++];
  }

  nums.splice(left, right - left + 1, ...temp);
};

我为部分题目写了题解,如下:

其余没写题解的题目,都在作业中写了详细注释,课程结束后会补上。

  1. LeetCode题解:231. 2的幂,位运算:去除二进制中最右边的 1,JavaScript,详细注释
  2. LeetCode题解:231. 2的幂,位运算取二进制中最右边的1,JavaScript,详细注释
  3. LeetCode题解:231. 2的幂,递归,JavaScript,详细注释
  4. LeetCode题解:231. 2的幂,迭代,JavaScript,详细注释
  5. LeetCode题解:52. N皇后 II,回溯+哈希表,JavaScript,详细注释
  6. LeetCode题解:51. N 皇后,回溯+哈希表,JavaScript,详细注释
  7. LeetCode题解:52. N皇后 II,回溯+哈希表,JavaScript,详细注释
  8. LeetCode题解:242. 有效的字母异位词,数组计数,JavaScript,详细注释
  9. LeetCode题解:242. 有效的字母异位词,哈希表两次循环,JavaScript,详细注释
  10. LeetCode题解:242. 有效的字母异位词,哈希表一次循环,JavaScript,详细注释
  11. LeetCode题解:242. 有效的字母异位词,数组排序,JavaScript,详细注释