本文无意引战,只是陈述自己在学习 CS 过程中的感受。
声明如下
本文观点通过对大多数情况的不完全归纳得到,CS 吊车尾和非 CS 怪物的存在并未纳入考虑范围。此外,非科班生和科班生的选取遵守对照原则和单一变量原则——在本文中具体体现为专业排名相近、智力相近、性别相同、性格相近等,评价指标为算法理解能力、工程代码能力。
本文观点并不是建立在严谨的实验或推理上得到的,并不具备可信度,权当玩笑话。
本文所讨论的 CS 科班生为系统学习了 CS 核心课程的人、并不局限于计算机专业
图源来自网络,如果有侵犯您的权益,请联系作者以删除。
![](https://i-blog.csdnimg.cn/blog_migrate/03a67e24dfcdce4cbb0752c5bc2887d7.png)
欢迎来到正文部分
随着对 CS 了解的加深,我愈发有这样一种感觉——计算机的学生学的真的是计算机,所有的课程、分支都是
在教你用得好(如软件工程)、用的新(如人工智能、图形学)、用的妙(如计组、算法)。这让我有些担心——计算机鲜明、
强烈的工具导向是否会逐渐磨灭我们那种 wow 的感觉和提问的乐趣呢?有失必有得,回报就是对计算机的理解的加深。
Matt Might 在 What every computer science major should know
中谈到如何学体系结构时,认为 Computer scientists should understand a computer from the transistors up
.
在我刚入学的时候也常常听人说起:计算机学生大四毕业的时候所有学过的课程都会在脑海里串成一张相互联系的网络。
这种网络,是 CS 学生用自己的时间堆出来的,也是科班生与非科班生一个重大差异
下面本文就一道简单的算法题为例具体谈谈这种让人“舒服”的联系
这是 LeetCode 上的一道中等难度的位运算题
题目链接在这里:大家之后可以去刷一下
只出现一次的数字 II
题目简介
给你一个整数数组 nums ,除某个元素仅出现一次外,其余每个元素都恰出现三次 。请你找出并返回那个只出现了一次的元素。
示例:
输入:nums = [2,2,3,2]
输出:3
暴力算法
首先,能得到正确结果的算法 >> 优美但只能看的算法
循着这种思想,我们通常会写一个暴力算法理清思路
int singleNumber(vector<int>& nums) {
unordered_map<int, int> numTimes;
...
for (int num : nums) {
++numTimes[num]</