查看: 4222| 回复: 54
跳转到指定楼层
上一主题 下一主题
收起左侧

文科生学算法刷题打卡贴

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
楼主文科生,马上要上CS研究生,趁着这学期和今年暑假自学一下算法,计划开始刷题,求督促鞭策。上周把算法导论看完了,趁着春假过一遍UCB的算法书(UCB基友推荐),看完就刷。。。(废话好多orz

评分

参与人数 2大米 +6 收起 理由
Kevin_Liu6 + 3 加油💪
gppcbs + 3 给你点个赞!

查看全部评分


上一篇:在职刷题打卡贴
下一篇:cs PhD第四年开始刷题战拖
推荐
 楼主| hh692 2019-3-17 23:57:59 | 只看该作者
全局:
基础真的好弱,刚才花一个多小时才模拟出一道简单的BFS是什么意思。
我理解的BFS recap:
1. 是用一根指针模拟在一个图形中的行走方法,用最快的时间让这根指针走最大的面积
2. 每当指针走到一个Node的时候,它的下一步就是同时扩散走到这个node对应的所有adjacent node,这一步其实是矛盾的,因为只有一个指针,不能同时走好几步,但是在有多个相临边的时候就可以
3.queue的作用是一个存储容器,因为当一个node有好几个相临边的时候,最后临界点这个指针在哪里呢?是这些相临边中的其中一边吗?即使记住了最后一个node,怎样记得最后第二个,后N个呢?这时候需要queue把同时踩到的node一起记录在queue中,等到遍历完所有adjancent node后,重新回到queue,queue.front()代表下一次从哪里出发。

993这题是判断一个Binary tree中两个node的值是否构成cousin, cousin的定义是:1)not share parents 2) of the same depth
这道题目可以用BFS做的原因是,BFS路径遍历graph的时候是按照每一个node对应的层次层级遍历的,binary tree正好是层次感很强的图形。

每经历一个node,就把他的left 和right放到queue里面,接着以queue中的left 和right为一次循环,分别检验left的left,right和right的left,right是否符合给定的参数。如果每一次循环对应的count==2, return true,otherwise设定boolean为false,重新开始新的循环。

我一开始没有把题目给的例子模拟清楚,就是忽略了3点:
1. 如何保证两个node属于相同的depth:BFS层级遍历,同一层级的一起看
2.如何保证不share一个parent? 如果一个Node左右两个孩子都是参数x,y,count只计算一次
3.每进入一个新的层次,cnt重新设置为0, boolean==false

回复

使用道具 举报

推荐
xiaohan0425 2019-3-30 11:44:08 | 只看该作者
全局:
debuger 发表于 2019-3-30 01:58
具体是哪门coursera ML, 吴恩达的吗?

是的 是吴恩达的~给你一下我的学习内容参考链接呀~

1.机器学习课程链接:
https://www.coursera.org/learn/machine-learning/home/welcome

2.深度学习专项课程链接:
https://www.coursera.org/specializations/deep-learning
里面包括5个子课程,一个个接着学就完了,建议学完机器学习再来看这个~

3.因为我个人没有学过Python想转data,所以选了一个python处理数据相关的专项课程,有一样的目的可以试试。内容比较简单,基本上只介绍了处理数据需要用到的python内容,如果纯想把python学扎实就上别的课吧~
Python专项课程链接:
https://www.coursera.org/special ... scripting-in-python
里面包含4个子课程分别是:Python Programming Essentials、Python Data Representations、 Python Data Analysis和Python Data Visualization

评分

参与人数 1大米 +3 收起 理由
debuger + 3 谢谢分享!

查看全部评分

回复

使用道具 举报

推荐
 楼主| hh692 2019-3-18 00:35:07 | 只看该作者
全局:
70 rotting oranges:这是最后一道没做的BFS简单题目,看到题目我想的算法是:
1. 先找到所有的rotten orange,放入queue
2.每一个rot对应的相邻fresh orange变成rotten,count++;
3.取queue中的下一个rotten orange, update adjacent fresh orange;

写代码的时候我觉得困难的地方:
1.不知道怎么update相邻的fresh orange,其实很简单,就是grid[i][j]中i+1, i-1和j+1,j-1的update
2.另外queue中存储的是rotten orange的位置,用pair, pair.first, pair.second分别表示横纵坐标

我发现BFS是可以有模板可以用的,希望可以尽快写出属于自己的模板
回复

使用道具 举报

🔗
 楼主| hh692 2019-3-8 04:48:09 | 只看该作者
全局:
这么惨淡没有人看的吗?昨天看了UCB教材的DFS 和BFS部分(chapter 3 and chapter 4),但是很快就忘记了.今天打算看DP和greedy algorithm, 看完打卡。想趁着春假刷一遍算法课的录音不过已经周四可能没希望了。。。
回复

使用道具 举报

🔗
gppcbs 2019-3-8 05:29:47 | 只看该作者
全局:
好厉害哦,中文系的老学长欢迎一起学习。
回复

使用道具 举报

🔗
 楼主| hh692 2019-3-11 13:09:44 | 只看该作者
全局:
gppcbs 发表于 2019-3-8 05:29
好厉害哦,中文系的老学长欢迎一起学习。

谢谢,没有厉害,加油~~!
回复

使用道具 举报

🔗
 楼主| hh692 2019-3-11 13:10:44 | 只看该作者
全局:
把3,4,5章都看了,UCB的huffman code看不下去回家温习算法导论笔记,我真的发现我记不住哎,这比高中数学简单多了只是记忆而已嘛,回家把春假看过的所有笔记模拟一遍,加油!
回复

使用道具 举报

🔗
 楼主| hh692 2019-3-13 21:29:47 | 只看该作者
全局:
好久没上来了,还是没养成每天看一亩三分地的习惯,以后每天起床自习第一件事就是到地里更新+签到。前几天没打卡是因为心态崩了,近两年检查出来抑郁,很多时候因为一些小事做不好而自暴自弃,人生各方面陷入全方位沦陷,昨天想想这样其实没必要+对人生没什么帮助。正念(积极的想法越多),每天效率就会越高,做事做完也会比较开心。还有就是刷题的同时这半年一直在坚持运动,今天开始挑战10公里+100个卷腹,大家加油!
回复

使用道具 举报

🔗
 楼主| hh692 2019-3-13 21:31:47 | 只看该作者
全局:
认识很多所谓的大牛,每天睡3-4小时,其余时间都在research和上课,我没有要求自己一定要这么burn out,但是每天一定要有deliberate work的时间,自习揣摩每一道题目的含义。UCB的教材暂时看到这里了,graph theory和divide and 分而治之法看完了,今天起开始听算法录音。每天3课,这周就听完了。其实我已经听第二遍了,第一遍没怎么听懂。
回复

使用道具 举报

🔗
 楼主| hh692 2019-3-13 23:14:33 | 只看该作者
全局:
今天报了rice的python课程和S校的ML,全力补基础中。。。。
回复

使用道具 举报

🔗
 楼主| hh692 2019-3-17 11:23:02 | 只看该作者
全局:
昨天开始正是公开课模式,最近时间安排还是不好,杂事太多,每天尽量完成任务
回复

使用道具 举报

🔗
 楼主| hh692 2019-3-17 22:02:53 | 只看该作者
全局:
0317打卡:
申请到了这学期+暑期的RA,希望申请实习的时候简历可以更好看一点。虽然已经学过C++了但是感觉还不太会写代码,怎么办呢???打算上完Python(完成课后作业)继续打卡MIT的Introduction to C++,基础弱就要多写!加油!
回复

使用道具 举报

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

本版积分规则

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