学习
实践
活动
专区
工具
TVP
写文章

算法看天书,还有救吗?

我后来仔细回想了一下,我发现还不只是这一个算法,几乎我所学会的每一个算法,在我当初最早它的时候都觉得它非常非常难,很难很难理解。 以前算法看一两遍还看不明白,基本上就会先放到一边。之后如果有机会再碰到可能会再看一下,如果碰不到就不了了之了。所以虽然说起来算法学了好几年,但储备也就那么回事。 到比赛前也有很多常用算法写不利索,一些高端的算法更是只听其名,从未写过。 但那天之后,我有一点找到了感觉。 有了这么一个小小的变化之后,我有了一个惊人的发现,几乎没有什么算法是能够第一遍就秒懂的,但也几乎没有什么算法是能撑过三个回合的,再难的数据结构,硬着头皮看到第三遍的时候,基本上就都懂了。 回到问题本身,算法感觉看天书,还有救吗? 要我说答案很简单,有救,多看几遍就行。 喜欢本文的话不要忘记三连~

9320
  • 广告
    关闭

    2023新春采购节

    领8888元新春采购礼包,抢爆款2核2G云服务器95元/年起,个人开发者加享折上折

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    编程到底是什么?

    只有程序员需要编程吗? 今天,学习编程的大部分还是程序员和期望成为程序员的朋友。编程在大众眼中还是一种专门的职业技能,学了,是用来找工作的。 ? 即使一时无法达到社会全员编程的地步,至少正在朝着这个方向发展—— 越来越多的互联网行业非技术岗从业人员,比较典型的产品经理(PM),都在自学编程。 ? 编程的核心在于通过各种各样的算法去实现具体的业务逻辑,把繁杂的过程抽象化、可计算化。 从纯粹软件的角度讲,甚至可以说:算法 + 数据 == 计算机程序。 简单而言,"编程"就是学习用编程语言编写算法! 研习算法,修炼内功 计算机技术从诞生起就处在飞速发展之中。 这些方法和策略基于人类几千年文明史的思维基甸,又经历了最严格的数学分析和验证,本身既是人类文明的结晶,同时又是一种有效的思维训练。

    51920

    考研数学-1-导

    听了张宇的导班的视频,整理如下: 命题趋势 让基础知识,常规知识成为主体。 继续加强计算能力的考察。 继续加强应用能力的考察。 考察全面。 基础知识 张宇在视频中只讲了,这块有两个,分别是“高等数学常用基础知识一”和“高等数学常用基础知识二” 根据目前看到的视频内容,函数部分的基础知识有:三角函数,基本初等函数,基本初等函数的图像,导数,函数的单调性 数学数学二考察项目如下: 高等数学:同济六版高等数学中除了第七章微分方程考带*号的伯努利方程外,其余带*号的都不考;所有“近似”的问题都不考;第四章不定积分不考;积分表的使用;不考第八章空间解析几何与向量代数 线性代数:数学二用的教材是同济五版线性代数,1-5章:行列式、矩阵及其运算、矩阵的初等变换及其方程组、向量组的线性相关性、相似矩阵及二次型。 概率与数理统计:不考。

    21420

    【趣算法】Day1-为什么要算法

    14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣算法! 目录  一、什么是算法? 四、学习算法的入门之路 五、算法中时间和空间复杂度  时间复杂度 空间复杂度 六、结语 ----  一、什么是算法? 数据结构+算法=程序。 二、算法的特征 一个算法应该具有以下五个重要的特征: 有穷性 (Finiteness) 算法的有穷性是指算法必须能在执行有限个步骤之后终止; 确切性 (Definiteness) 算法的每一步骤必须有确切的定义 会数据结构的基本操作和经典算法。 会利用数据结构与算法,解决实际问题。 熟练使用和改进数据结构,优化算法。 ----  至少会一种编程语言(编程语言是我们的载体和工具) 熟悉数据结构 学习常见的几种算法 刷题         刷题网站:                 打比赛:Vjudge、POJ、HDU、Code

    12350

    零基础编程026:什么编程语言最有前途?

    (封面图来自于网络) 想学习编程的朋友可能一直纠结于到底哪一种编程语言最有前途,我google了一下,在维基百科的下面这个页面里大概有500多种编程语言,这些相对来说还是比较知名的编程语言,不包括一些语言的方言以及一些标记性的语言 另外有一个网站几乎每个季度都会公布一次编程语言排名,它是著名的TIOBE,它的排名算法大概也是根据网上相关文章多少、搜索关键词的频度等计算出来的。 停止纠结 与其在多种编程语言中纠结和争吵,不如从排名前10的语言中挑一种快速入手,所有的主流编程语言基本上都是相通的。编程的基本原理是相同的,背后的算法没有变,数据结构也类似,只是语法稍有不同而已。 相比语法,更重要的是理解计算机原理、数据结构和算法。如果你真是零基础,那就选Python吧,这语言写起来比较简练,上手相对容易些。 公众号后台发消息:python,跳转到“零基础编程”的所有文章目录。 --- END ---

    71480

    编程为什么要数据结构?

    我曾经推荐一个学生到某知名公司,没多久,学生给我说了应聘的事情:“我介绍我开发了企业管理系统、在线商城系统等等,没想到他问我使用了什么数据结构和算法,我懂很多技术,那么多功能我都实现了,他不问,却问我使用了什么数据结构和算法 数据结构、算法我早就忘了,我会开发软件还不行吗?”人力资源总监也反馈过来意见:“很搞笑,这个学生做了不少系统,却说根本没用到数据结构和算法。” 前者是数据结构,后者是算法。只有数据结构没有算法,相当于只把数据存储到计算机中而没有有效的方法去处理,就像一幢只有框架的烂尾楼;若只有算法,没有数据结构,就像沙漠里的海市蜃楼,只不过是空中楼阁罢了。 算法是指对特定问题求解步骤的一种描述,说白了就是解决问题的方法策略。 遇到一个实际问题,充分利用所学的数据结构,将数据及其之间的关系有效地存储在计算机中,然后选择合适的算法策略,并用程序高效实现。 同一个问题,如何有效地存储数据,不同的数据结构产生什么样的算法复杂性,有没有更好的存储方法提高算法的效率?

    1.3K10

    数学,要“直觉”还是要“严谨”?

    在我们从小学习数学的旅程中,培养对数学的直觉式的敏感,以及分析问题能够不重复,不遗漏,具备完备思维逻辑的能力是贯穿我们整个学习生涯的。 那作为数学的学习和科学素养的培养,是直觉重要还是严谨重要呢?它们分别有什么特点? 什么是数学直觉和严谨? 首先看直觉。 这便是数学直觉,我们的大脑有一种神奇的能力去发现和学习客观世界里的结构。哪怕我们并没有严格地数学化这种结构,也因为大量的实例数据总结出来了,并且在大量的场景中已经足够通用,这其实也是数学建模的过程。 它们虽然没有数学符号化的严谨,但是口口相传,一直没出问题,在不要求那么严谨的日常生活中,反而是最可行的方法。 那严谨的数学来看,排列是什么呢?其实所谓的排列,在数学上可以有两种结构来表达。 绝对不是,但是这却是数学定义中最接近我们的中思维的表达,是一次伟大的对人脑极限概念的数学建模,甚至以之结果称为真正的极限的定义,而不再只靠直觉了。这便是严谨的数理逻辑给人类的伟大贡献。

    23810

    大学如何开始编程

    大学如何开始编程? 作为编程初学者每个人一开始都很迷茫不知如何学习,学习也没动力,其实大家都是一样的,但这并不意味着你会成为一个糟糕的 程序猿(媛)。 ✍ 编程的好处 1.思维方式的改变 乔布斯说过:「每个人都应该学习编程,因为它教会你思考的方式」我们学习编程,是不一定要成为程序员的。 就像每个人都应该学习法律,但不是都要成为律师;就像每个人都应该学习经济,但不是必须成为经济学家;就像每个人都要学习数学,也不是为了成为数学家。 思维改变归结为一条就是:不能够忍受不清晰的表述。 作为初学者,你可能要先从C语言、Python或HTML开始,一旦掌握了一门编程语言,你就发挥无穷的想象,开发各种神奇的软件和小工具啦。 多最常用的及行业内规范的算法。 写代码要做到代码规范、写注释、让代码结构清晰、整洁、易读 。 多学着用编程语言来解决问题。 你可以用编程来解决模拟真实情景中的问题。

    16210

    孩子该不该编程

    我这同学专业是会计和金融,不懂编程。每次他都多给孩子们带些点心糖果,在一边看着孩子们自己自己玩儿,很没有成就感。 受到这种激励,他也想学点编程。我把自己的那篇《七周学会做搜索引擎》发给了他。 他读了好几遍,觉得编程很值得,MOOC太有用了,兴奋得睡不好觉。 他问孩子们的编程该如何入门?我依然推荐了Python语言,但是使用的MOOC与成人的完全不同。 而编程语言、系统环境总是在变化的,小时候深入学了某一种编程语言,长大基本上都已过时,用不上了。因此编程还不如下棋,对孩子的思维更有启发。 我们的主要分歧来源于对“编程”的定义。 我们这些80后,基本上都是上了中学才拥有学习电脑的机会。教材都是先是从ENIAC开始讲历史。 考试之前不得不去背诵冒泡排序、选择排序和快速排序算法之间的差别。 上机的机会是很稀缺的。学校机房里面空调、地毯一应俱全,机器却是早已过时的Apple II,里面只能敲点儿Basic语句。

    44820

    五分钟编程:怎么数据结构

    如果没有数据结构的基础知识,也就没有谈算法的意义了,很多时候即使你会使用一些封装好的编程api,但你却不知道其背后的实现原理,比如hashmap,linkedlist这些Java里的集合类,实际上都是JDK 看完了这个系列的视频之后,我又转战开始啃书了,视频里讲的都是数据结构的基础,而书上除了基础之外,还有一些算法题目,比如你完了线性表和链表之后,书上就会有相关的算法题,比如数组的元素置换,链表的逆置等等 众所周知,算法题和数学题一样,需要多加练习,而且考研的时候必须要手写算法,于是我就经常在纸上写(抄)算法,你还别说,就算是抄,多抄几次也有助于理解。 《数据结构与算法Java版》 如果你是Java的,想有一本Java语言描述的数据结构书籍,可以试试这本,但是这本书显然比较复杂,不适合入门使用。 总结 关于数据结构的学习,我们就讲到这里了,如果还有什么疑问也可以到我公众号里找我探讨,虽然我们提到了算法,但是这里只关注一些基础的数据结构算法,后续会有关于“怎么算法“的文章推出,敬请期待。

    28600

    为什么要算法?

    什么是算法?有什么用? 算法是对某种问题给出的较优解,它不能学习sql一样,很容易就学会了怎么查询,怎么修改. 那它是没用的么? 不是! 你的sql或者其他某些技术,他能帮你解决工作中80%或者90%的问题,但真正能体现出你价值的却是剩下的20%或者10,甚至5%的工作. 为解决这些问题,你需要的是日积月累,不断沉淀的技术.而这些技术中很重要的一点就是算法. 算法是你登上金字塔顶的阶梯!~ ---- 提问:价值如何体现? 回答:不可替代! ---- 常用数据结构和算法推荐 时间复杂度 插入排序 快速排序 KMP字符串匹配 单向链表反转 如何删除给定单向链表的倒数第N个元素 --快慢指针 如何从有序数组中找到和为指定值的两个元素下标 --贪心算法 如何找出单向链表中每个节点之后的下个较大值? --单调栈

    13020

    码农也要算法

    算法与数据结构 数据结构和算法开篇 如果说,熟练掌握编程语言是外功,那么数据结构可谓是内功心法了 抽象数据类型(ADT)的物理实现 “数据结构”是计算机中存储,组织数据的方式。 典型的散列算法可以是任何一个:具有无限的定义域,且具有有限的值域的函数。甚至,宽松的广义散列算法可以是任何一个(数学意义上的)函数,因为函数本身的概念就是将一个或多个值映射到一个唯一的值。 【算法】递归算法之n阶矩阵行列式求解 设计算法时使用递归的思想是一个程序员的基本素质,递归可以把一个很庞大的问题转化为规模缩小了的同类问题的子问题,通过这一思想,我们编程时运用递归可以使用很少的代码来处理很大的问题 Java 加密算法 JAVA加密算法(1)- 密码概述及BASE64算法使用 密码基本功能:机密性、鉴别、报文完整性、不可否认性 JAVA加密算法(2)- 消息摘要算法(MD5、SHA、HMAC) (需Bouncy Castle) 前端也要算法 为什么我认为数据结构与算法对前端开发很重要?

    797100

    Python算法入门大全

    来看一下这个Github上囊括了几大主流的编程语言: ? 有Python,Java,C,C++,Scala和C#,发现Python打头阵,非常欣慰。Python已经作为四大主流语言地位越来越稳了。 代码还是写的非常工整而且很严谨,一共才20来行,而且作者非常贴心的考虑到了Python2和Python3两种版本的支持,也加了很多注释,看的出编程的习惯非常好。 堆排序 是一种基于比较的排序算法。 上面只是挑选了2个比较典型的算法实现,还有很多经典的排序算法,比如桶排序,鸡尾酒排序,插入排序,归并排序,选择排序;以及搜索算法,比如线性搜索: ? 线性搜索或顺序搜索是用于在列表中查找目标值的方法。 快速选择是一种选择算法,用于查找无序列表中的第k个最小元素。它与快速排序算法有关。quicksort一样,它是由Tony Hoare开发的,因此也被称为Hoare的选择算法。 [1] quicksort一样,它在实践中很有效并且具有良好的平均情况性能,但是具有差的最坏情况性能。Quickselect及其变体是最常用于高效实际实现的选择算法

    43711

    我教孩子算法

    正好自己前两天看一本算法书,挑前面几个简单的算法给孩子讲讲,也算是给孩子做个启蒙。为了帮助他更好地理解,做了段程序演示下。顺序普及下Python代码。 1. (顺便普及下统计,呵呵)。在折半查找中,其比较次数的范围在3~7之间,中位数在6。简单理解,就是平均比较6次就能得到结果。 如上面两类算法比较可见,不同算法的执行效率差别很大,那么如何比较不同算法的执行时长呢?这里引入了一个方法—大O表示法。它并不是以秒为单位的速度比较,而是通过比较操作数,衡量出算法运行时间的增速。 O(n) 也叫线性时间,这样的算法包括简单查找。 O(n*log n) 这样的算法包括快排序,一种速度较快的排序算法。 O(n2) 这样的算法包括选择排序,一种速度较慢的排序算法。 O(n! ) 例子中未谈到的算法,比如旅行路径问题。

    50021

    扫码关注腾讯云开发者

    领取腾讯云代金券