楼主: jiang718
跳转到指定楼层
上一主题 下一主题
收起左侧

LeetCode打卡

🔗
 楼主| jiang718 2018-11-6 03:16:51 | 只看该作者
全局:
落了好几天打卡,不过都在打卡群里打了。就不在帖子里补了。
今天打卡群的题是350,比较简单,用一个map/dict就可以,算是巩固Python、Java语法。
Python:
用collections.Counter()
java:
HashMap<Integer, Integer>
注意应用getOrDefault
最后List转int array,可以使用list.stream().mapToInt(x->x).toArray()

通过这两天的题发现一些C++/Java能过的算法,Python不一定能过,需要要么在时间效率上进行本质上的优化,要么尽可能减少无效操作,哪怕只是减少个时间效率系数,或者少几次格式转换,都可以让tle变成AC。这有点像当初Pure面试时那种要极致的进行优化的思想。所以以后使用Python需要留意运行时间。

Python还有不支持bst这个问题。这些都说明了刷题bilingual的重要性。
回复

使用道具 举报

🔗
 楼主| jiang718 2018-11-9 14:23:31 | 只看该作者
全局:
454. 4Sum II
算法:
两两分组放入dict,尽量提高运行效率。

805. Split Array With Same Average
自己的解法:
类似背包dp。只不过多了一维度表示背包里的实际东西含量。
答案用的数学法,明早再看。
回复

使用道具 举报

🔗
 楼主| jiang718 2018-11-14 07:50:01 | 只看该作者
全局:
补昨天打卡的题。
310. Minimum Height Trees
很有意思的一道题,把Two Pointer的思想应用到了树的身上,尝试过在树上使用dp思想,但没有想过two pointer的应用,以后遇到树的题,如果树形态解决不了,就先尝试解决单个path形态的子问题。
Python注意点:
1. set小写,
graph = collections.defaultdict(lambda:set())  => 建立一个键值为set的字典。
2.
que = [] (普通list,没有popleft函数,但可以遍历模拟bfs)
que = collections.deque([])  (这是deque,可以用来当queue用,缺点是如果要返回整个queue,需要转换为list)

今日打卡题。
95. Unique Binary Search Trees II
Java生成只有一个元素的list:
Collections.singletonList(元素值)  例如Collections.singletonList(null)  Collections.singletonList(0)
Java生成不含有元素的list:
new LinkedList<...>()   new ArrayList<..>()
Java生成含有两个元素的int array:
Queue<int[]> q;
q.offer(new int[]{1, 2});

特别注意:
像C++这种vector不是引用类型的,最好把vector的reference作为参数传递。
void generateTreesSub(int l, int r, vector<TreeNode*> & res)    (C++的子函数名)
public List<TreeNode> generateTreesSub(int l, int r)                  (Java的子函数名)
def generateTreesSub(l, r):                                                            (Python3子函数名)
回复

使用道具 举报

🔗
 楼主| jiang718 2018-11-15 02:44:34 | 只看该作者
全局:
今日打卡题。
241. Different Ways to Add Parentheses
依旧是暴力枚举。
Java:
直接返回List<Integer>。
照样使用了Collections.singletonList(...)
Java String转int:
Integer.valueOf  |  Integer.parseInt
Java Substring:
input.substring(起始,结束(开区间))

Python:
直接返回list。
Python String转int:
int(..)
Python Substr:
input[起始: 结束(开区间)]

C++:
还是void函数,把结果当成参数,传引用(vector<int> &)。
C++ 初始化unordered_set:
unordered_set<int> set; (class里)
set = unordered_set<int>({1, 2, 3});  =>可以直接用数组,vector生成,例如(arr, arr+3) 或者(vec.begin(), vec.end()) 或({1,2,3}),但要注意,不能在class定义的时候直接操作,初始化要放在某个函数里。
C++ String转int:
stoi(...)
C++ Substring:
input.substr(起始点,长度)
回复

使用道具 举报

🔗
 楼主| jiang718 2018-11-16 06:53:53 | 只看该作者
全局:
224 Basic Calculator
解法:
用一个sign stack和记录数字和左括号的stack,每次num stack回退遇到(的时候,sign stack也需要回退,后来意识到可以把sign和左括号一起放入num stack,就不需要俩stack。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表