jajaplus / blog

0 stars 0 forks source link

ARTS 第二十二周(2019.11.25-2019.12.01) #23

Open jajaplus opened 4 years ago

jajaplus commented 4 years ago

算法

https://leetcode-cn.com/problems/3sum/submissions/

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var threeSum = function(nums) {
  let sum = []
  nums=nums.sort((a,b)=>a-b)
  if(nums[nums.length-1]<0)return []
  nums.forEach((num,index)=>{
      if(num<=0&&num!==nums[index-1]){
        let left = index + 1
        let right = nums.length - 1
        while(right>left){
            let numSum = num+nums[left]+nums[right]
            if(numSum===0){
                sum.push([num,nums[left],nums[right]])
                while(nums[left]===nums[left+1]){
                    left++
                }
                left++
            }else if(numSum<0){
                left++
            }else{
                right--
            }
        }
      }
  })
  return sum
};

把数组进行排序,然后根据排序后数值大小的规律进行进一步遍历,左右进行比较可以尽快找出符合值。当然存在一些极端的情况,所以要做排除。只要数据有规则,就可以进行处理,同时排除极端情况。

阅读

https://www.freecodecamp.org/news/i-write-to-learn/

技巧(优秀代码)

https://my.oschina.net/wsafight/blog/3144704

  1. 少即是多:尽量抽象出共同的逻辑,把分类的最基础逻辑抽离出来。
  2. 统一:多人写代码,一定会有所不同的,所以要做好规范
  3. 抽象:化繁为简。尽量不要抽象业务代码,去抽象那些流程,比如http请求的拦截,业务的拦截,相应的拦截
  4. 权责对等:让不同的组件承担相应的功能,不要过多也不要过少
  5. 只做一件事:虽然代码遍复杂了,但是可读性增加了
  6. 注释和命名:要具有规律
  7. 考虑场景:代码的可读性十分重要,可读性提高,修改也不会太难改

    分享(js实现3d效果)

    https://my.oschina.net/u/4007037/blog/3134685 运用tree.js