jajaplus / blog

0 stars 0 forks source link

ARTS 第十一周(2019.09.09-2019.09.15) #11

Open jajaplus opened 5 years ago

jajaplus commented 5 years ago

算法

https://leetcode-cn.com/problems/median-of-two-sorted-arrays/submissions/

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number}
 */
var findMedianSortedArrays = function(nums1, nums2) {
    let totalNum = nums1.length + nums2.length
    let isEven = totalNum%2 === 0
    let middleIndex = parseInt((totalNum-1)/2)
    let index1 = 0
    let index2 = 0
    let sortedArr = []
    while(sortedArr.length<totalNum){
        if(index1===nums1.length){
            sortedArr = sortedArr.concat(nums2.slice(index2))
        }else if(index2===nums2.length){
            sortedArr = sortedArr.concat(nums1.slice(index1))
        }else if(nums1[index1]<nums2[index2]){
            sortedArr.push(nums1[index1])
            index1++
        }else{
             sortedArr.push(nums2[index2])
            index2++
        }
    }
    if(isEven){
        return (sortedArr[middleIndex]+sortedArr[middleIndex+1])/2
    }else{
        return sortedArr[middleIndex]
    }
};

阅读

https://www.freecodecamp.org/news/quick-intro-to-recursion/

归并排序

用于处理单个有序,多个无序的数组,用来排序。

  1. 创造一个用来储存放置新有序数组的空间
  2. 设置n个指针,分别为n个要排序的数组的头一项
  3. 比较n个指针所对应的数据,取最小或者最大,此指针变换,其余不变
  4. 多次执行第三次操作,知道剩下最后一个数组,然后直接放置在新排序的数组的末尾

分享(js的五个不良的编码习惯)

https://juejin.im/post/5d3e3706f265da1b60294c1f

  1. 使用类型转换(js会自动转换数据类型,常见的有==两个等于,还有布尔值的转换,当确定数据的类型时要先判断数据类型,然后在规范数据的真假,不要随便使用真假,因为真假的数据类型很多,容易产生混乱。主要发生在判断的时候)
  2. 尽量使用es6的语法,摒弃之前老旧的写法
  3. 避免使用var来声明变量,要把变量尽量放在块级作用域里面
  4. 不要使用未初始化的变量
  5. 不要使用随意的编码风格(要确定命令的规范)