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

[入门|算法|数据结构] 自学CS61B打卡,加油这个暑假上完!

全局:
公开课
学校名称: UCB
Unit号: 4
开课时间: 2014Spring
课程全名: CS61b Data Structure
平台: 其他
URL: https://people.eecs.berkeley.edu/~jrs/61b/

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

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

x
第一天,听完了cs61b第一节的课程,大概两个小时。
Java和python好不一样呀~

上一篇:求推荐java入门课
下一篇:Udemy课程“Advanced JavaScript Concepts”点评 + 超详细JavaScript知识点笔记附上
推荐
 楼主| smoothiethu 2019-8-23 15:31:03 | 只看该作者
全局:
vvqqdd 发表于 2019-8-23 14:02
上课视频在哪看的

youtube搜的
回复

使用道具 举报

推荐
vvqqdd 2019-8-23 14:02:28 | 只看该作者
全局:
上课视频在哪看的
回复

使用道具 举报

推荐
 楼主| smoothiethu 2019-9-17 06:47:40 | 只看该作者
全局:
hw5 借用别人的收获paste到这里,自己用来复习的时候用把:
收获
0、Set.java 与package list真正体现了protected不作用于package之外。Set.java只能调用list中声明的publ‍‌‌‌‍‍‌‌‌‍‌‍‌‌‌‍‌‌ic函数来调用相关信息。对于set来讲,set看不到list内部数据结构的实现形式:DList或者SList。
1、封装:ListNode加入了List类型的field,使两个class更加紧密的耦合在一起,避免错误的调用外部节点。同样的,这些信息在Set看来,都是隐藏于list之内的。list向外呈现的只有:
inEmpty();length();insertFront();insertBack();front();back();/isValidNode();item();setItem();prev();next(); insertAfter(); insertBefore(); remove();
2、注意方法的归属要准确。
ListNode类:【isValidNode();item();setItem();prev();next(); insertAfter(); insertBefore(); remove();】
List类:【inEmpty();length();insertFront();insertBack();front();back();】
3、接口可以用来引用实现这个接口的对象,这也是接口的意义所在,如Comparable接口。始终注意:“可以引用”不等于“可以调用对象所有属性与方法”----接口的遥控按钮与对象所属类的遥控按钮不一致。
4、Set类的intersection()函数花了很长时间。原因在于:本质算法没有一步一步的清晰搞懂,只靠模糊的思想写出来的程序必定会有bug!
如:set1与set2求intersection时(升序),思想:set2的每一个元素与set1的元素进行比较,只要比set1元素大,则set1的这个元素删除,同时继续与set1的下一个元素比较,直到不满足set2的这个元素大于set1的元素的情况。这种情况又有2中子情况:==或者<。“==”的时候删除set1的这个元素,set2的元素插入set1后边;“<”的时候set2的下一个元素与该元素进行比较,重复前边操作。注意点:为了防止访问invalidnode,分别对set1与set2的最后一个点进行单独处理,则加入while控制条件,使最后一个点不进入循环体(j>1 / i>1),则在循环体外检查并操作j==1/i==1的情况。j==1时,有3种情况:< 、==、 >。分别讨论。
5、在调用对象函数前,注意检查是否valid,用if来判断。这之后才能调用相关函数。
6、外部类Set使用DList时,最好用DList的父类类型List声明,以免后期需要使用List的其他子类,如SList类。
7、类DList需要用DListNode()构造函数来创建新节点时候,避免直接使用DListNode(),而是创建方法method newNode(),在方法中返回DListNode()。这样后期需要使用其他节点类型:如SListNode时候,不需要对DList类中换掉所有DListNode(),只需要在方法newNode中,返回SListNode()即可。
8、注意Exception的使用。try-catch-finally或者throw exception
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-8-21 08:16:34 | 只看该作者
全局:
拖了快半周忙别的去了,终于搞定了java git和ide等,今天做完了lab1,比较简单,主要是考察新手写java时候容易出现的问题。今天还看完了第二节课 Defining Class。
C:\Users\Jinpeng\Desktop\cs61b\lab\lab1\Capture.PNG

Capture.PNG (6.65 KB, 下载次数: 1)

Capture.PNG
回复

使用道具 举报

🔗
gretyy 2019-8-21 08:23:30 | 只看该作者
本楼:
全局:
老哥加油
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-8-21 11:09:05 | 只看该作者
全局:

谢谢!字数字数
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-8-22 09:13:25 | 只看该作者
全局:
今天利用下班时间做了homework1.很多java的操作都不是很熟悉,需要google一些指令。不过第一次的作业比较简单。
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-8-23 08:00:29 | 只看该作者
全局:
今天上完了Arrays和Loops,看完了reading materials。
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-8-23 15:43:09 | 只看该作者
全局:
Lab2 今晚完成了。
这次Lab主要是考察了对于class object的理解,
static field是在整个class中共同share的,即可以累计计数的。
changeNumerator的时候需要对最初的Fraction,即this的num进行修改赋值。
发现用IntelliJ的时候为什么有时候Fraction函数中会有n:, d:, 有时候却没有= =,难道是ide的问题吗?
另外附运行结果一张。

Capture.PNG (12.05 KB, 下载次数: 0)

Capture.PNG
回复

使用道具 举报

🔗
 楼主| smoothiethu 2019-8-24 12:36:33 | 只看该作者
全局:
HW2做完。
这次作业有些难度,对于object,String,conditon,loop都进行了详细的考察,刚刚做的时候因为不熟悉java的数据声明和调用。
Part I是比较基础的问题,主要是三个helper function的构造,isLeapYear, daysInMonth, isValidDate。这样的函数可以大大简化后面的coding。
Part II考察了构造Date object,declare data fields, 还有将date转换为String,需要使用上课老师讲的Integer class里面的toString()method。
Part III的问题有些难,但是我发现先做difference 然后引用difference method用来define isBefore和isAfter会简单很多。做difference的时候我发现如果直接比较两个date会考虑的条件太多,如果我们都从公元1开始计天数,这样总共的两个days的差就是两者的差,而且免去了很多condition。
Part IV的问题是将String进行拆分 分出year month day,然后重新构造object,不过我没有仔细考虑String的其他情况,如0开头,尾巴加上AD等特殊条件,如果加上这些其实应该返回错误。。限于时间,我就没做这么深入。
总的来说,这次作业出的很好,充分考察了object string等概念。赞!

Capture.PNG (20.76 KB, 下载次数: 0)

Capture.PNG

评分

参与人数 1大米 +1 收起 理由
小亩_0718 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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