优雅的软件工程师

今天写算法的时候、通过两道题深深意识到了,什么是优雅的代码(应该说不按套路出牌的代码)

我被折服了

第一个就是141. 环形链表 - 力扣(LeetCode)

判断换环状链表

我的思路就是用快慢指针判断,非常平平无奇

然后看到高手的题解了,真的就如标题一般天秀

我的评价

看看大神的解法

1.JSON.stringify(head) 秒杀法😃
除非不报错,报错就是有环!!

var hasCycle = function (head) {
    try {
        JSON.stringify(head)
    } catch{
        return true
    }
    return false
};

2.标记法
给遍历过的节点打记号,如果遍历过程中遇到有记号的说明已环🤓

const hasCycle = function(head) {
  while (head) {
    if (head.tag) {
      return true;
    }
    head.tag = true;
    head = head.next;
  }
  return false;
};

3.鸡贼法
题目说了范围不超过100000,没超过size能发现空节点就是没有环, 超过了就是有环!!!

const hasCycle = function(head) {
  let i = 0, size = 100000
  let node = head
  while (++i <= size) {
    if(!node) return false
    node = node.next
  }
  return true;
};

天才,真是天才,这三种都秀到我了,尤其是第一种,脑子发麻

我见天才,就如浮游见青天一般

第二道

242. 有效的字母异位词 - 力扣(LeetCode)

 简单题,有很多方法,怎么优雅怎么来,

var isAnagram = function(s, t) {
let a=[...s].sort().join("")
let b=[...t].sort().join("")
 return a==b?true:false;
};

结果官方的更优雅

var isAnagram = function(s, t) {
    return s.length == t.length && [...s].sort().join('') === [...t].sort().join('')
};

逻辑一样,但是人家更优雅呀,表示比不上

感受:以前写项目什么的没意识到什么是优雅,反正就知道自己写的一般,有的地方写的还很繁琐,后面看书看到一句话,高级的程序员写的代码要么所有人都看的懂,要么所有人都看不懂,及今天又看到了这些脑洞,真是感觉人外有人,天外有天,真T-m优雅呀,太厉害了,希望自己也能努力写出优雅的代码

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值