algorithm003 / algorithm

17 stars 42 forks source link

算法训练营(深圳站)第一周作业 #1

Open GeekUniversity opened 5 years ago

GeekUniversity commented 5 years ago

要求

  1. 每周至少完成给定题目中的两道算法题
  2. 围绕每周重点学习的算法知识点,撰写一篇有观点和思考的技术文章(字数不限)
  3. 第一周作业特别要求:根据你的理解和掌握程度,绘制一张属于你自己的数据结构和算法知识脑图。脑图请放在学习总结中一起提交。

注意事项

  1. 下面列出的题目中,按照知识点进行了简单分类,但并不意味着使用相应的数据结构或算法一定是解决该题目的最优解,这样分类只是为了方便大家有针对性的练习;
  2. 有的题目可能需要结合多个算法或数据结构进行求解。

第一周题目

数组、链表

简单:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 简单:https://leetcode-cn.com/problems/rotate-array/ 简单:https://leetcode-cn.com/problems/merge-two-sorted-lists/ 简单:https://leetcode-cn.com/problems/merge-sorted-array/ 中等:https://leetcode-cn.com/problems/swap-nodes-in-pairs/ 中等:https://leetcode-cn.com/problems/3sum/

Map & Set

简单:https://leetcode-cn.com/problems/valid-anagram/ 中等:https://leetcode-cn.com/problems/group-anagrams/

堆栈、队列

简单:https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/ 简单:https://leetcode-cn.com/problems/remove-outermost-parentheses/ 困难:https://leetcode.com/problems/largest-rectangle-in-histogram/ 困难:https://leetcode.com/problems/trapping-rain-water/

二分查找

简单:https://leetcode-cn.com/problems/arranging-coins/ 中等:https://leetcode-cn.com/problems/powx-n/ 困难:https://leetcode-cn.com/problems/dungeon-game/

递归

简单:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/ 简单:https://leetcode-cn.com/problems/symmetric-tree/ 简单:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/ 简单:https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 简单:https://leetcode-cn.com/problems/binary-tree-paths/ 简单:https://leetcode-cn.com/problems/range-sum-of-bst/ 中等:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/

作业提交规则

  1. 在提交作业之前,请先阅读这里的 README 文档: https://github.com/algorithm002/algorithm/blob/master/README.md
  2. 然后在此 Issues 下按照如下格式回复(示例见一楼):

作业提交

学号: username: 代码作业:(填写自己仓库下对应的作业链接即可,同时记得给本仓库提交 pull request) 学习总结:发表自己本周的学习感言 issues,并提交链接,issues 标题格式:“【学号后三位-week1】+文章标题”,格式参考:https://github.com/algorithm003/algorithm/issues/2 使用语言:

GeekUniversity commented 5 years ago

作业提交

学号:000 username:GeekUniversity 代码作业:https://github.com/GeekUniversity/assignment01/blob/master/helloworld.py 学习总结:https://github.com/algorithm003/algorithm/issues/2 使用语言:Python

GeekUniversity commented 5 years ago

作业提交

学号:000 username:GeekUniversity 代码作业:https://github.com/GeekUniversity/assignment01/blob/master/helloworld.py 学习总结:#2 使用语言:Python

(通过Quote reply,在这里写下你对某位同学代码作业或学习总结的点评)

SymerBoy commented 5 years ago

作业提交

学号:037 username:孙勇猛 代码作业:https://github.com/symerSun/algorithm/tree/master/Week_01/id_37 学习总结:#5 使用语言:JAVA

suhuabing commented 5 years ago

作业提交

学号:035 username:苏华兵 代码作业:https://github.com/suhuabing/algorithm/tree/master/Week_01/id_35 学习总结:#8 使用语言:JAVA

SymerBoy commented 5 years ago

作业提交

学号:035 username:苏华兵 代码作业:https://github.com/suhuabing/algorithm/tree/master/Week_01/id_35 学习总结:#8 使用语言:JAVA

对于对称2叉树(leetCode 101) if判断可缩进为一行, if(left == null && right == null) return true; else if(left == null || right == null) return false;

另外对于如果当前节点值不相同直接返回false即可,否则,直接双层下探; return left.val != right.val ? false:isSame(left.left,right.right) && isSame(left.right,right.left); 思路其实是相同的.只是还有表达方式不同; ps:没有同学提交作业,只能先挑一个开刀了;

suhuabing commented 5 years ago

作业提交

学号:037 username:孙勇猛 代码作业:https://github.com/symerSun/algorithm/tree/master/Week_01/id_37 学习总结:#5 使用语言:JAVA

1、 LeetCode_104_37,else这个代码可以去除,因为如果root == null就已经返回了。减少代码量 2、 LeetCode_441_37,可以使用二分查询,降低时间复杂度。因为结果是一定要符合阶梯层级并且消耗总数在n范围内。所以,利用二分查找,如果最终的中间那个数的消耗总数等于n,那就直接返回中间的那个数即可。如果不是,那就继续二分查找,到时 最后一个中间数时,如果还是没有等于的,那我们就取左边后退一位的那个数。

HelloThisWorld commented 5 years ago

作业提交

学号:024 username:HelloThisWorld 代码作业:https://github.com/HelloThisWorld/algorithm/tree/master/Week_01/id_24 学习总结:#14 使用语言:Java

libinyl commented 5 years ago

作业提交

学号:040 username:libinyl 代码作业:https://github.com/libinyl/algorithm/tree/master/Week_01/id_40 学习总结:#18 使用语言:Python

yyyyfan commented 5 years ago

作业提交

学号:033 username:杨帆 代码作业:https://github.com/yyyyfan/algorithm/tree/master/Week_01/id_33 学习总结:#20 使用语言:Go

yyyyfan commented 5 years ago

作业提交

学号:037 username:孙勇猛 代码作业:https://github.com/symerSun/algorithm/tree/master/Week_01/id_37 学习总结:#5 使用语言:JAVA

二叉搜索树缺少第三个条件, 它的左、右子树也分别为二叉搜索树

yyyyfan commented 5 years ago

作业提交

学号:035 username:苏华兵 代码作业:https://github.com/suhuabing/algorithm/tree/master/Week_01/id_35 学习总结:#8 使用语言:JAVA

针对Week_01/id_35/LeetCode_49_035.java中代码

            List<String> list = map.get(String.valueOf(sortArray));
            if (list == null) {
                list = new ArrayList<String>();
            }
            list.add(strs[i]);
            map.put(String.valueOf(sortArray), list);

可优化为

            List<String> list = map.computeIfAbsent(String.valueOf(sortArray), item -> new ArrayList<String>());
            list.add(strs[i]);
zhomgwu commented 5 years ago

作业提交

学号:030 username:吴穗智 代码作业:https://github.com/zhomgwu/algorithm/tree/master/Week_01/id_30 学习总结:#31 使用语言:CPP

kkkkk0cool commented 5 years ago

作业提交

学号:023 username:kkkkk0cool 代码作业:https://github.com/kkkkk0cool/algorithm/tree/master/Week_01/id_23 学习总结:#33 使用语言:c++

scytlaimin commented 5 years ago

作业提交

学号:032 用户名:scytlaimin 代码作业:https://github.com/scytlaimin/algorithm/tree/master/Week_01/id_32 学习总结:#34 使用语言:JAVA

xsplus commented 5 years ago

作业提交

学号:006 username:xsplus 代码作业:https://github.com/xsplus/algorithm/tree/master/Week_01/id_6 学习总结:#40 使用语言:Go

katecqc commented 5 years ago

学号:05 username:陈巧婵 代码作业:https://github.com/katecqc/algorithm/tree/master/Week_01/id_5 学习总结:#35 使用语言:Javascript

Peng282 commented 5 years ago

#作业提交 学号:047 用户名:Peng282 代码作业:https://github.com/Peng282/algorithm/tree/master/Week_01/id_47 学习总结:#47 使用语言:JAVA

wu360 commented 5 years ago

作业提交

学号:042 username:winn 代码作业:https://github.com/wu360/algorithm-1/tree/master/Week_01/id_42 学习总结:#78 使用语言:Java

pizhihui commented 5 years ago

作业提交

学号:012 username:pizhihui 代码作业:https://github.com/pizhihui/algorithm/tree/master/Week_01/id_12 学习总结:https://github.com/algorithm003/algorithm/issues/46 使用语言:Java

pizhihui commented 5 years ago

作业提交

学号:035 username:苏华兵 代码作业:https://github.com/suhuabing/algorithm/tree/master/Week_01/id_35 学习总结:#8 使用语言:JAVA

24 题的 Swap Nodes in Paris 的常规解法需要四个指针,绕来绕去,有点晕,不过可以考虑递归解法。还在研究中

pizhihui commented 5 years ago

作业提交

学号:000 username:HelloThisWorld 代码作业:https://github.com/HelloThisWorld/algorithm/tree/master/Week_01/id_24 学习总结:#14 使用语言:Java

Merge-Two-Sorted-Lists递归的解法不错呀,学习下新的思路,我都是用简历指针,各种穿针引线用的,有时候比较头晕

pizhihui commented 5 years ago

学号:05 username:陈巧婵 代码作业:https://github.com/katecqc/algorithm/tree/master/Week_01/id_5 学习总结:#35 使用语言:Javascript

js 代码好简洁,正在研究中。。。。

pizhihui commented 5 years ago

#作业提交 学号:032 用户名:scytlaimin 代码作业:https://github.com/scytlaimin/algorithm/tree/master/Week_01/id_32 学习总结:#32 使用语言:JAVA

sum of two 的解法,两个循环的 map 和一个循环的 map 还是有时间差别哦。效率还是差距很大,不过在理解方面还是相反的。HashMap 的解题思路在很多方面都有借鉴了。

Kilien commented 5 years ago

作业提交

学号:001 username:庄棨帆 代码作业:https://github.com/KiLien/algorithm/tree/master/Week_01/id_1 学习总结:#47 使用语言:Python review:3005333504

pizhihui commented 5 years ago

作业提交

学号:035 username:苏华兵 代码作业:https://github.com/suhuabing/algorithm/tree/master/Week_01/id_35 学习总结:#8 使用语言:JAVA

merge sorted array 那道题,拷贝数组和排序都需要耗费时间,我这里的思路好像指针挪动可以弄。目前还没想到具体解法。

suhuabing commented 5 years ago

#作业提交 学号:032 用户名:scytlaimin 代码作业:https://github.com/scytlaimin/algorithm/tree/master/Week_01/id_32 学习总结:#32 使用语言:JAVA

1、LeetCode_1_32,第18行中的 index != i 这个条件是不需要的,因为i是递增的map中的value与i肯定是不一致的,并且,只要target - num[i]作为map的key获取值存在,就说明当前这个值肯定和map那个值两个相加是等于target了。

suhuabing commented 5 years ago

作业提交

学号:042 username:winn 代码作业:https://github.com/wu360/algorithm-1/tree/master/Week_01/id_42 学习总结: 使用语言:Java

1、Solution101,第40行中的else其实不用的,因为如果if满足就已经return了; 2、Solution111,第34开始,如果左子树为空,说明右子树不为空,那就直接return右子树直接下钻就好了,不需要再判断左右子树的最小深度了。如果右子树为空,说明左子树不为空,同理。能执行到最后的,说明左右子树都不为空,那才左右子树都下钻。

suhuabing commented 5 years ago

作业提交

学号:012 username:pizhihui 代码作业:https://github.com/pizhihui/algorithm/tree/master/Week_01/id_12 学习总结:#46 使用语言:Java

LeetCode.104.maximum-depth-of-binary-tree.java中17、18行可以直接合成一行,因为新的变量都没地方用了, return (leftMaxDepth > rightMaxDepth) ? leftMaxDepth + 1 : rightMaxDepth + 1;

suhuabing commented 5 years ago

学号:05 username:陈巧婵 代码作业:https://github.com/katecqc/algorithm/tree/master/Week_01/id_5 学习总结:#35 使用语言:Javascript

js写法挺好的,也够简洁,学习了!

hu5980 commented 5 years ago

作业提交

学号:029 username:胡光耀 代码作业:https://github.com/hu5980/algorithm/tree/master/Week_01/id_29 使用语言:Swift

0xmer1in commented 5 years ago

作业提交

学号:002 username:OriginalCola 代码作业:https://github.com/OriginalCola/algorithm/tree/master/Week_01/id_2 学习总结:#55 使用语言:Python

libinyl commented 5 years ago

作业提交

学号:023 username:kkkkk0cool 代码作业:https://github.com/kkkkk0cool/algorithm/tree/master/Week_01/id_23 学习总结:#33 使用语言:c++

LeetCode_101_23.cpp第 4 5 行可以去掉吧~

katecqc commented 5 years ago

5

代码很简洁清晰,return和if-else的冗余去掉就更好了~

libinyl commented 5 years ago

https://github.com/OriginalCola/algorithm/tree/master/Week_01/id_2

  1. 感觉可以多多利用 python 的语法糖哈~~
  2. LeetCode_189_2.py这个好像没merge好冲突,可以看下哈
libinyl commented 5 years ago

学号:05 username:陈巧婵 代码作业:https://github.com/katecqc/algorithm/tree/master/Week_01/id_5 学习总结:#35 使用语言:Javascript

好详细&漂亮的脑图!收藏了!

lemenlee commented 5 years ago

作业提交

学号:027 username:李凌峰 代码作业:https://github.com/lemenlee/algorithm/tree/master/Week_01/id_27 学习总结:#56 使用语言:Python

libinyl commented 5 years ago

作业提交

学号:000 username:HelloThisWorld 代码作业:https://github.com/HelloThisWorld/algorithm/tree/master/Week_01/id_24 学习总结:#14 使用语言:Java

我来吹毛求疵一下, tab 而不是空格,缩进真的影响观感呀!

katecqc commented 5 years ago

https://github.com/hu5980/algorithm/tree/master/Week_01/id_29

崇拜你完成的作业量,总结的解决方法很多也全面,向你学习!! (PS:空格和空行的格式建议统一一下~)

yyyyfan commented 5 years ago

学号:05 username:陈巧婵 代码作业:https://github.com/katecqc/algorithm/tree/master/Week_01/id_5 学习总结:#35 使用语言:Javascript

你的脑图总结的真的棒, 但是有个小缺点,代码里不写注释,有点影响阅读

imchangchang commented 5 years ago

作业提交

学号:017 username:imchangchang 代码作业:https://github.com/imchangchang/algorithm/tree/master/Week_01/id_17 学习总结:https://github.com/algorithm003/algorithm/issues/57 使用语言:Python PR:https://github.com/algorithm003/algorithm/pull/58

yyyyfan commented 5 years ago

作业提交

学号:002 username:OriginalCola 代码作业:https://github.com/OriginalCola/algorithm/tree/master/Week_01/id_2 学习总结:#55 使用语言:Python

作业的解题思路写的详细,并且分析了每个方法的时间、空间复杂度,这个点很值得我去学习

libinyl commented 5 years ago

作业提交

学号:012 username:pizhihui 代码作业:https://github.com/pizhihui/algorithm/tree/master/Week_01/id_12 学习总结:#46 使用语言:Java

这道题貌似忘记上传了?看下哈~

yyyyfan commented 5 years ago

作业提交

学号:017 username:imchangchang 代码作业:https://github.com/imchangchang/algorithm/tree/master/Week_01/id_17 学习总结:#57 使用语言:Python

提个小建议,代码不写注释是很影响别人阅读的,甚至一段时间后,自己阅读都需要花费更多的时间

katecqc commented 5 years ago

https://github.com/KiLien/algorithm/tree/master/Week_01/id_1

题目都画了详细的推理过程,受教了~

0xmer1in commented 5 years ago

https://github.com/OriginalCola/algorithm/tree/master/Week_01/id_2

  1. 感觉可以多多利用 python 的语法糖哈~~
  2. LeetCode_189_2.py这个好像没merge好冲突,可以看下哈

冲突是指哪里,不太懂

cc1901 commented 5 years ago

学号:051 username:cc1901 代码作业:https://github.com/algorithm003/algorithm/pull/60 学习总结:https://github.com/algorithm003/algorithm/issues/61 使用语言:Java

kkkkk0cool commented 5 years ago

作业提交

学号:023 username:kkkkk0cool 代码作业:https://github.com/kkkkk0cool/algorithm/tree/master/Week_01/id_23 学习总结:#33 使用语言:c++

LeetCode_101_23.cpp第 4 5 行可以去掉吧~

不能去掉,如果去掉就会core了

0xmer1in commented 5 years ago

学号:05 username:陈巧婵 代码作业:https://github.com/katecqc/algorithm/tree/master/Week_01/id_5 学习总结:#35 使用语言:Javascript

脑图很好,我借鉴来完善一下自己的脑图。

0xmer1in commented 5 years ago

作业提交

学号:023 username:kkkkk0cool 代码作业:https://github.com/kkkkk0cool/algorithm/tree/master/Week_01/id_23 学习总结:#33 使用语言:c++

厉害了,这完成量

0xmer1in commented 5 years ago

作业提交

学号:040 username:libinyl 代码作业:https://github.com/libinyl/algorithm/tree/master/Week_01/id_40 学习总结:#18 使用语言:Python

21题那,Solution2的代码能更简洁的