可能语言比较混乱,先打个预警,本文章产出主要为了自己复盘,有不对的地方可以提出。
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++并没有学好导致的,不过未来的我应该懂我在说啥)
暂时不想写了,等这几天多刷点链表再来补充,每次刷力扣都感觉除了力扣,人生再也没有难题了(手动狗头)