算法:锻炼写代码的逻辑

刷题位置:leetcode

书籍:小灰漫画算法

leecode使用方法:

转载自http://blog.csdn.net/tostq

又到了一年毕业就业季了,三年前的校招季我逃避了,可这一次终于还是要轮到我了=_=||。
       作为要准备踏入码农行业的人来说,要准备校招,怎么能不去刷刷LeetCode呢?
       LeetCode收录了许多互联网公司的算法题目,被称为刷题神器,我虽然早有耳闻,不过却一直没有上面玩过。即使这一年多来,做的编程还是挺多的,不过毕竟不是计算机专业的科班出身,在编程过程中土路子实在太多了,有时不仅写得煎熬,而且书写很多时候都非常不规范。所以就决定在找工作前夕,花点时间好好刷刷LeetCode。
       主要的目的:
       1、熟悉各互联网公司的算法题目,为找工作做准备。
       2、复习以前学过的编程语言,LeetCode支持几乎所有主流编程语言,大家可以用不同语言来做题。
       3、熟悉常见的算法和数据结构,LeetCode提供了交流平台,一些大神会将自己的解法贴出来共享,有些巧妙的解法实在令人叫绝,虽然几乎都是英文,但上面的国人也特别多(中文拼音名字>_<)。
       4、学习别人的编程思维,加快编程的速度,避免常见的BUG。
       LeetCode的题目并不多,目前大概有358道,不过有些题是加锁的,好像有付费才能使用,能做的题应该有150多道吧,这也是完全足够了。
       另外LeetCode的题型都非常简单明了,并不需要的复杂的理解,一般都在50行以内就可以解决了,如果你写了上百行代码,就肯定说明你想太多了或太复杂,虽然都能用很短的代码就能解决,但并不意味着LeetCode的题目非常简单,实际上LeetCode基本上涉及到了所有常规的算法类型。
       关于LeetCode的刷题时间:个人认为大概是要一个月左右,如果你是大神的话,也许大概能在两到三个星期间刷 完,不过做为新手,除了埋头做题,更重要的是去讨论区看看别人的代码或思路。像我的话,基本上每道做完后都会去看看别人的解法,虽然速度慢了点,不过会学到了许多。
       关于本系列博客:LeetCode我现在虽然还没刷完,但也刷了很多,写这个博客的目的主要是记录总结刷题的过程,防止过段时间又忘了曾经自己所写,整个系列的博客应该会有20~30篇左右,应该会在今年9月份结束。另外博客主要是以专题的形式分类(比如数学类、数组类、链表类)记录题目,并不会单独把一个题拿出讲。
       好了,现在就让我们开始LeetCode吧!
       首先我们需要在leetcode上注册一个账号,然后登录,开始我们的编程吧!

一、选择题目类型
       最上面标签栏Problems,给出了三个分类:Algorithms、Database、Shell,分别表示算法题、数据库题、Shell脚本题,第一个就是我们所需要的算法题。

二、选择算法题
       点开Algorithms后,我们可以看到一列题目的列表,每个题目都有独一无二序号,后面的接受率(Acceptance)表示提交的正确率,Difficulty表示难易程度。
       LeetCode按难易程度分成了:Hard、Medium、Easy三个级别。
       Easy级别一般并不需要太多思考就可以想到算法,甚至可以通过直接的方式,特别适合新手去熟悉编程语言。
       Medium级别就会有些难度,一般都会涉及到经典的算法,需要一定的思考。
       Hard级别是最难的,有些时候是算法本身的难度,有些时候特别需要你考虑到各种细节。
       每个题目前面的小箭头表示该题已经完成。题目列表最上方有一个Choose one filter,可以将已完成的题目从列表中去掉。

三、筛选某一类型的题
       如果我们只想要找某一类型的题,可以通过Tags或Company来筛选
       在题库的右边栏可以看到如下,这里列出许多公司的题目

另外,如果我们只想做关于字符串、数组或链表相关题,可以通过Tags

如果我们在做某一题时,觉得还想再做一个类似的,巩固一下,可以通过该题下面的Show Similar Problems和Tags来找到相似的问题

四、如何和别人讨论
       每个题目都有各自的Discuss按钮,点击进入后,就能看到了讨论区。

在这里,许多人都把自己的代码放到了上面,就像BBS一样,你可以发贴提问,也可以回复别人。

五、关于代码编写、测试与提交
       点开我们选择的题目后,就可以进行代码编写了,LeetCode一般都会直接提供一个函数式接口,我们只需要编写函数内部就可以了,而需要考虑到库文件,另外,在上面选择栏中,可以切换选择自己需要的编程语言。

程序编写完了之后,不要急着提交(Submit Solution 按钮),先可以测试运行下(Run Code)

我们还可以点开Custom TestCase旁边的小框,点开后,可以在里面输入我们自己设定的输入值。

一般情况,数组的输入形式是[a1,a2,a3,a4……]
       当然我们测试完整无误后,再选择提交Submit Solution。
       如果出现错误,会有提示。
       如果正确无误,会有如下提示:

我们可以点开More Details查看详细结果说明
       或者点开Next challenges 旁边的题继续做题。

六、查看自己提交的题目

在最上面标签栏找到自己,选择:
       My Submissions:可以找到自己提交的题目(包括了正确提交和错误提交)提交的代码也是都是可以看到的
       Manage Sessions:主要是管理自己的提交情况,错误率和正确率,总完成率之类。

每道题旁边的My Submissions可以找到自己的对于该题的提交情况

点开后,就可以找到自己过去所有的提交,
       点Accepted 或 Wrong Answer就可以查看自己过去提交的代码情况,当然还有得分。

 

java 基础:多线程,io,反射

书:Java编程思想

数据库:缓存,查询(crud各种函数,存储过程啥的个人认为只是锦上添花),索引

刷题:(牛客网刷sql)     leetcode也不错

框架:spring,springboot,springcloud

解读源码(spring),会使用srpingboot,springcloud;

英语:背单词,这个非常重要

方法:建议找一个付费的方法去背单词,百词斩其实并不适合背单词。然后多练习说出来,说错了一时丢人,不敢说一辈子都丢人

然后学学语法,翻译一些外籍的儿童书,然后就可以阅读源码注释以及官方文档啦。

java程序员学习路线阶段总结20190903的更多相关文章

  1. 聊聊阿里社招面试,谈谈“野生”Java程序员学习的道路

    引言 很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想说,这位同学你站出来,保证不打死你,-_-),原文章名称叫做<回答阿里社招面试 ...

  2. Java程序员学习之路

    1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...

  3. 【Python】Java程序员学习Python(五)— 函数的定义和使用

    不想做一个待宰的羔羊!!!!要自己变得强大.... 函数的定义和使用放在最前边还是有原因的,现在语言趋于通用,基本类型基本都是那些,重点还是学习对象的使用方法,而最根本的还是方法的使用,因此优先介绍, ...

  4. 如何准备阿里社招面试,顺谈 Java 程序员学习中各阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  5. PHP程序员学习路线

    注:本文是@黑夜路人的旧文,假设PHP程序员基础不是非常扎实,简单梳理了每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标.再次分享,共勉,欢迎补充. 第一阶段:基础阶段(基础 ...

  6. Java程序员进阶路线-高级java程序员养成

    1. 引言 搞Java的弟兄们肯定都想要达到更高的境界,用更少的代码解决更多的问题,用更清晰的结构为可能的传承和维护做准备.想想当初自己摸着石头过河,也看过不少人介绍的学习路线,十多年走过来多少还是有 ...

  7. 写给自己的Java程序员学习路线图

    恩,做开发的工作已经三年多了,说起来实在是惭愧,自己的知识树还像一棵小草一样,工作中使用到了许多的知识和技术,不过系统性不够.根基不牢.并且不够深入!当然,慢慢的我也更加的清楚,我需要学习一些什么样的 ...

  8. 【Python】Java程序员学习Python(二)— 开发环境搭建

    巧妇难为无米之炊,我最爱的还是鸡蛋羹,因为我和鸡蛋羹有段不能说的秘密. 不管学啥,都要有环境,对于程序员来说搭建个开发环境应该不是什么难题.按顺序一步步来就可以,我也只是记录我的安装过程,你也可以滴. ...

  9. 写给自己的Java程序员学习路线图_转载

    如下是我做开发这三年经常使用一些技术和工具,当然这些技术也都是需要加强的(有些是我一直使用的,不过不深入,有些内部的原理等等不是很清楚) 前端部分: 1)HTML:网页的核心语言,构成网页的基础 2) ...

随机推荐

  1. Codeforces Round #479 (Div. 3) D. Divide by three, multiply by two

    传送门 D. Divide by three, multiply by two •题意 给你一个数 x,有以下两种操作,x 可以任选其中一种操作得到数 y 1.如果x可以被3整除,y=x/3 2.y= ...

  2. Java基础之十五 泛型

    第十五章 泛型 一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大. 在面对对象编程语言中,多态算是一种泛化机 ...

  3. python 简单的实现文件内容去重

    文件去重 这里主要用的是set()函数,特别地,set中的元素是无序的,并且重复元素在set中自动被过滤. 测试文本为 data.txt 具体代码如下: // 文件去重 #!/usr/bin/env ...

  4. PID算法资料【视频+PDF介绍】

    最近一直有网友看到我的博客后,加我好友,问我能不能给发一些PID的资料,今天找了一些资料放到百度网盘上,给大家下载: 视频资料 链接:https://pan.baidu.com/s/12_IlLgBI ...

  5. 数据结构之稀疏矩阵C++版

    //只是简单的演示一下,这个实际运用视乎不怎么多,所以java版不再实现 /* 希疏矩阵应用于对数据的压缩,仅仅保留不为0的数据 稀疏矩阵的转置,可以由多种方式,下面演示的稍显简单,时间复杂度略高O( ...

  6. 腾讯PCG(后台开发) 牛客网视频面试 一面

    腾讯视频面试 作为一个小渣渣记录一下,腾讯是我一直想进的公司,但其实准备的时间不是很长,也不是科班还是存在很大的劣势,记录一下找工作的经历. 首先说一下,这是我第一次视频面试,还是蛮紧张的.不过面试官 ...

  7. IDEA搭建工程

    1. 创建一个Project File -> New -> Project...   : 选择jdk版本,然后Next: 输入项目名,确定项目路径,Finish. 2. 创建一个Modul ...

  8. js作用域链和预编译

    js引擎运行分为两步,预解析 代码执行 (1)预解析: js引擎会拿js里面所有的var还有 function 提升到当前作用域的最前面 (2)代码执行:按照代码书写的顺序从上往下执行 预解析分为:变 ...

  9. 以阿里IoT开发物联网和应用平台

    1. 链接物联网的概念 物联网(The Internet of Things,简称IOT)是指通过 各种信息传感器.射频识别技术.全球定位系统.红外感应器.激光扫描器等各种装置与技术,实时采集任何需要 ...

  10. 前端表格数据导出excel

    使用tableExport.js导出bootstrap-table表格成excel并且支持中文 1. 下载tableExport.js https://github.com/hhurz/tableEx ...