有效的括号
思路:
对于括号是否正确闭合,可以总结一下,靠后的左括号需要先闭合,靠前的左括号需要后闭合,这种场景与“栈”相同。
那么如何匹配同种类型的左括号与右括号呢?可以考虑使用hash,但是此处需要以右括号为key,以左括号为value。因为我们需要判断当前字符是否是右括号,需要用到map.containsKey方法。
同时,判断map.getkey取出左括号与栈顶的左括号是否相同。
合并两个有序链表
思路:
两个有序链表l1和l2,比较两个链表的首个元素的value,取出最小的元素,然后比较剩余元素与另一个链表的首个元素,取出两个链表的第二小的元素,将最小元素的next值指向第二小的元素,以此类推(可以使用递归)
链表的方便之处就在于其pre及next,合理利用这两个属性可以带来意想不到的效果。
删除排序数组中的重复项
思路:
使用双指针法,一个慢指针,从头部开始,一个快指针,从慢指针+1的位置开始,比较快慢指针两处的元素是否相等。
如果相等,快指针+1,慢指针不动。
如果不相等,将快指针处的元素赋值给慢指针+1处的元素。
最后,返回新数组长度,注意此时慢指针的值为下标,需要加一才为新数组长度值。
最后给大家推荐一款idea刷算法题的插件,在插件中心搜索leetcode即可,安装后需要用户名、密码登录。长这个样子(网络原因,有些图片无法加载。。。)
明天见~~~