刷题总结(1)

可能语言比较混乱,先打个预警,本文章产出主要为了自己复盘,有不对的地方可以提出。

JS

leetcode2727.判断对象是否为空

第一次写很神经的直接obj.length,后来跑了下发现都是undefined,这还玩啥啊()

js没学好,我的锅。

对象的长度不能用.length获取,可以用js原生的Object.keys获得一个对象熟悉的数组,然后再用length

/**
 * @param {Object|Array} obj
 * @return {boolean}
 */
var isEmpty = function(obj) {
    let arr = Object.keys(obj)
    return arr.length === 0 ? true : false;
};

这就结束了么,没有,继续学习下其他大佬的优雅写法。其实总结来总结去就是js没学好导致的(这种话万能程度简直等于你一犯错别人就说“玩原神玩的”

题目里说了,对象或数组是通过JSON.parse解析得到的,那我们就可以JSON.stringify再把它倒回去,这样就很统一了。如果JSON.stringify(对象).length<=2,那就返回true(其实===2就是空的,亲测)  (😫)

prototype.reduce()

单独拿出来,因为感觉很有意思。一直以为它只能做累加用,结果仔细看了一下,以前对它了解还不到位。

举个例子,求数组最大值,当然可以for循环对吧?但是reduce一行就行了
return arr.reduce((pre,cur)=>{return pre>cur?pre:cur})

具体如下:

arr.prototype.max=function(){
  return this.reduce((pre, cur)=>{
    return pre > cur ? pre : cur
  })
}

最值问题以后就用reduce了,优雅~()

C++

子集

欣赏一个错误代码,贴主一度觉得自己写的非常好

两个字总结下问题:递归

一句话处理:去掉第一个for循环判断,dfs(u+1)改成dfs(i+1)

不同路径&最小路径和

同类型,但是需求不同,一个侧重点在路径上,管球你路径和呢。不多说了,提醒一下自己dp别再写错了。

136.只出现一次的数字

1.复习了一下for-each,感觉平时太习惯用for了,可见c++也没真学好。

for-each大概是啥捏,写段代码:for(int i :nums),是不是比for简短多了?如果不要用到下标(索引值)而只要用到对应数,直接for-each就行了。

2.unordered_set相信我自己肯定学好了,但unordered_map不太会用。

unordered_map有first和second方法,first方法得到的是map中的key,second方法得到的是map中的value,键值对出现了。所以遍历一遍nums数组,把出现过的数字和次数都存入map里面,之后在map中再逐个遍历一下出现过的数字,用second方法做判断。主要键值不要弄混淆了。。。

203.移除链表元素

贴个代码先

    ListNode* tmp = cur->next;
    cur->next = cur->next->next;
    delete tmp;

这个每次看每次都迷惑,啥玩意,tmp是干嘛的。今天认真写一下,tmp创建出来是为了清除内存的。cur->next这个点是要被移除的节点,它所占的内存我们就用tmp去指示了。(语言混乱,c++并没有学好导致的,不过未来的我应该懂我在说啥)

暂时不想写了,等这几天多刷点链表再来补充,每次刷力扣都感觉除了力扣,人生再也没有难题了(手动狗头)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值