[问题] 数据结构与算法的学习与coding习惯杂问

楼主: souhang (lasomiredo)   2021-09-26 20:38:15
前言(废话):
各位安安,
小弟之前有接触过一咪咪autohotkey,因为最近找到了coding的乐趣,
开始透过youtube学习python,大概学到了用class建立对象与方法,
但一些很简单的内置函数也都是看到别人用,才会知道有这东西。
在学习的过程中,我知道了leetcode这玩意,并在解题思路的帮助下,解出了第一题。
但到了第二题才发现,leetcode的入场门票是需要会数据结构与算法,
这是我发文的主要原因。
以下问题:
1.数据结构与算法资源推荐(中文偏好)
目前自己找到的资源,要嘛跟讲得天书一样难,
要嘛听懂的却又没有code给我看实际到底长怎样,有点难过
2.加强基础的练习资源推荐
帮助手册能教我如何使用,但如何运用或许就要透过刷题来学习了,
我知道leetcode和zerojudege,前者还不是我目前能面对的,
后者我也正在刷,只是想知道除了这些还有没有其他推荐。
不限于刷题资源,教学文章、影片也可以(我觉得可以挑战一下英文)
3.如何避免循环内的循环(for中for的改写)
有时候会在for循环中再加入for循环,如果是一个两个看起来还好,
但如果多起来的话,感觉逻辑上就会变得难厘清。
如果以下面的code来说的话),要如何避开或改善这个问题。
4.其他改善(同样的code)
这部分像是注解、变量命名等等,因为没参与过别人的开源项目,
也不知道怎么做才是对其他开发人员友善,但又想早点培养习惯,
想来想去好像献丑是最直接有效的改善方法,
如果在能力范围内做得不够好的话,希望各位能够提点一下。
问完了,谢谢各位
这部分是code:
# 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标
值 target 的那 两个 整数,并返回它们的数组下标。
# 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出
现。
# 你可以按任意顺序返回答案。
class Solution:
def twoSum(self, nums: list[int], target: int) -> list[int]:
"""
功能:
从列表中找寻二者之和与目标值相同的数,返回他们在列表中的位置
作者: ddavid (谎言接线生)   2021-09-26 21:03:00
针对问题1跟2,特别是“听懂的却又没有code给我看”这句,其实就是你根本的程式逻辑跟语言熟练度不够的问题了。基本上应该要往“理解的概念就要能够转换为程式”前进就好像脑中的想法能转换为英文讲出口,才叫做会英文
作者: pmove (金疾柠檬)   2021-09-26 21:22:00
回第一个问题,我当时在学资料结构,书是使用C++当范例,其实资料结构没有一定要用哪种语言实作,所以没有一定要用Python来实作,个人建议学C/C++的资料结构,Python可以自行领悟回第三个问题,iterative 本身跟 recursive 可以互换,但是两个for其实也还好回第二题(抱歉跳着回答),若是为了以后薪水着想,英文能力> 专业(硬件)知识 > coding能力,基本上,如果您英文新多益有900分以上,这辈子大概就不愁吃穿了。另外,程式语言请不要执著于Python, 在台湾都还是跟硬件较相关,薪水较高。回第四题,一般来说公司会订coding style, 例如tab 要用4个space来取代,名称要用匈牙利命名法 还是要用 骆驼命名法…
作者: Supershero (拉拉)   2021-09-26 22:35:00
有关第四点可以参考PEP8
作者: ck574b027 (荒围!定厝!贼!妹!)   2021-09-26 23:07:00
leetcode有分难度吧,难的先跳过不用客气
作者: aalexx (aalexx.S)   2021-09-27 01:48:00
基本功练好、观念正确比较重要。不要禁不起诱惑只刷题练面试,不然大学资工系没有存在的道理。python普遍上应该是snake命名+4空格,但还是看专案或公司,没有硬性规定。风格上可以看pep8程式语言不是问题,选个舒服的入门就好。姿态正确了学新语言也是几周的事(撇开fp)。
作者: Hsins (翔)   2021-09-27 13:52:00
多益 900 以上就不愁吃穿我怎么没感受到这件事...
作者: pmove (金疾柠檬)   2021-09-27 14:29:00
所以楼上没死啊 XD不愁吃穿,最低限度来讲,就是没饿死没冻死的意思 XD
作者: leolarrel (真.粽子无双)   2021-09-27 17:42:00
没有多益也没关系,洗个四大文组就能当码农了还有我第一次看到不愁吃穿是这样解释的,真神人!
作者: pmove (金疾柠檬)   2021-09-27 20:27:00
咳咳,英文强到一个程度,在业界真的有很大的好处,至少可以到普遍福利比较好的外商。
作者: s0914714 (YA)   2021-09-27 22:12:00
英文好对找资料很有用 而且也有利进外商 非常值得投资
作者: sherees (ShaunTheSheep)   2021-09-28 01:14:00
近期收到夯特给的JD 必须英文沟通的团队年薪多约20~30万而且都是在台湾的远端缺回一下原PO 1.leetcode的话看讨论区 会说是用什么算法跟资料结构 有名词再去google2.跟着专案练习3.不一定是需要避免的 重点是可读性跟效率4.我之前是参考google python coding style 但重点还是跟团队配合 通常没有一定 但好的命名通常需要有良好的英文书写能力 这部分也可以参考软件版之前关于命名的讨论[心得][英文] 如何命名... 系列文另外注解建议用英文 开源社群不是只有华人
作者: GTR12534 (カラス)   2021-09-28 08:28:00
阿这不就是第一题吗?我有看过一个做法是另外做一个 list 出来,里面放的是原本给的 list 跟 target 的差,因为题目限制的关系,新旧 list 只有一个重复的。类似这样去最佳化算法。
作者: ddavid (谎言接线生)   2021-09-28 13:12:00
呃,英文学好有好处是没错,但把不愁吃穿这样解的,问题可能在中文啊XDDD底层DS跟算法确实从C/C++之类的找资源会比较多,Python说真的因为script语言易用的取向,相对不会去重刻底层基础DS了,都拿写好的用较多。当然要用得好或必要时动手改,基础还是得打好的。
作者: mantour (朱子)   2021-09-29 18:07:00
算法有时候会用虚拟码描述,你自己要培养把虚拟码写成可以跑的程式的功力
作者: pmove (金疾柠檬)   2021-10-02 20:19:00
所谓食衣住行,之所以不说不愁住行,住指的是买房子,行指的是买车子,这些都很花钱。而不愁吃穿,指的并不是财富自由。撇开最低限度,不饿死不冻死。吃在古代是久久才吃肉,你有办法餐餐吃肉,基本上是不愁吃了。穿在古代长袍马褂就要穿很久,坏了也只能修修补补,不会买新衣服,你有够多的衣服,基本上是不愁穿了。依这个标准,台湾很多人是不愁吃穿的…不过考试的话,不愁吃穿,有可能是财富自由的意思 XD
作者: b10007034 (Warren)   2021-10-18 16:40:00
现在要改成不愁房车了吧不愁房房更好
作者: Schottky (顺风相送)   2021-10-18 17:20:00
没想到在 Python 板可以看到各种不同语言的讨论

Links booklink

Contact Us: admin [ a t ] ucptt.com