任小龙(Will、龙17)高级讲师
EasyJF开源团队成员,技术经理,高级讲师。
擅长技术:JavaSE、Java Web、Spring、Hibernate、MyBatis、Spring MVC 、Struts2、Struts1、 WebService、Lucene、Android等开源技术;以及Oracle、MySQL等数据库技术。
龙老师实战经验丰富,热衷探索新技术,拥有多年的Java开发和培训经验, 授课富有激情又通俗易懂,知识点分析深入,举例贴近生活不乏幽默生动,注重引导学生思维。
讲课风格:课堂幽默生动,思维行云流水,授课水到渠成。
学生点赞:龙哥的视频,苍老师都喜欢。
学习Java编程需要参加Java培训吗?
随着社会信息的发展,Java技术已经无处不在,无论是手机软件、手机Java 游戏还是电脑软件等,只要你使用到电子产品就会碰到和Java有关的东西,更多的企业正采用Java语言开发网站,而在所有程序员中,Java开发工程师 就占据20%的比例。所以,现在依然有很多人选择学习Java语言。
学Java参加Java培训很有必要吗?很有必要,理由如下:
当下选择自学Java的朋友,大部分都会考虑网上查找Java入门视频跟着学习 ,网上的Java入门视频质量有没有保障呢?首先数量多,你该怎么选择好的Java入门视频资料呢?哪些Java入门视频资料中包含着已经淘汰的Java技术 ,你可以区分出来吗?
当然,如果你只是想先了解下Java编程,学一些基础的皮毛,那么Java基础 教程还是可以满足你的需求。但Java培训小编提醒你,真想学习Java基础教程就该找全套的教学视频,零零凑凑的建议你还不如不学。推荐**网的全套 免费Java教学视频针对零基础,想要入门的同学十分的靠谱,简单易懂。
自学Java首先Java学习资料的选择就是个相当大的问题,抛去这个问题。自 学Java没有专业Java老师在旁辅导,那么你势必要花出更多的时间和精力学Java,你口上说着计划每天花八个小时学Java,你真的能够做到吗?自学 Java,**怕自欺欺人,语言上的巨人行动上的矮子。
JAVA 分布式大纲
一阶段 java基础,我们将学习变量,基本数据类型,进制,转义字符,运 算符,分支语句和循环语句等,以达到训练基础语法和逻辑能力的目的。还有对数组、面向对象和异常处理等。
二阶段 javaWeb,主要是学习Web前端开发基础和框架、Servlet和JSP在Web 后端的应用、Web后端开发相关专题、MVC和分层架构以及项目开发流程及CASE工具的使用等。
三阶段 java框架,像框架整合开发(SSH/SSS)、RESTful架构和移动端接口 设计、第三方接口和在线支付功能、网站安全和Spring Security应用实战、复杂用户交互处理和Spring Web Flow的应用、MyBatis的应用和SSM整合等 技术点都是需要你掌握的。
四阶段 java 云数据,亿级并发架构演进、Linux基础、搭建tomcat环境以 及大数据开发云计算等高级Java教程,是Java技术的高端知识。其中穿插项目实战演练,企业真实项目供学员应用学习,进行知识体系的“二次学习” 。
Leetcode 199. Binary Tree Right Side View
>
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.
For example: Given the following binary tree,
1 <--- / 2 3 <--- \ 5 4 <---You should return [1, 3, 4].
s思路: 1. 树的问题,根本是遍历。这道题,站在右边,看到的是一层一层的,那么用bfs,用queue来存每一层的数,然后把每一层**后一个数输出即可! 2. 如果非要用dfs来,怎么办?这样的困境,之前也遇到过。回忆一下,发现居然有一个套路,可以让dfs同样实现bfs才能干的活。这个套路是这样的:设置一个level变量来跟踪目前变量所在的层数,如果这个层数比vector的size大,那就说明**次遇到,那么就需要resize vector来保存这个数;如果这个层数比vector的size小,说明以前遇到过,而且这个数在左侧,因此直接覆盖这个数在vector中的值。这样,**后在vector中留下来的数就是从右侧看到的数。**描述这个过程,发现dfs每个数都要写一遍在vector中,而bfs只有满足条件的才往里写! 3. 为啥不让找从左侧看到的树呢?因为太容易了,所有的遍历都是从左边开始。反而,从右边看的视图不容易得到。
//方法1:bfs,queue class Solution { public: vector<int> rightSideView(TreeNode* root) { // vector<int> res; if(!root) return res; queue<TreeNode*> QQ; TreeNode* cur=root; qq.push(cur); while(!qq.empty()){ int sz=qq.size(); for(int i=0;i<sz;i ){ cur=qq.front(); qq.pop(); if(i==sz-1) res.push_back(cur->val); if(cur->left) qq.push(cur->left); if(cur->right) qq.push(cur->right); } } return res; } }; //方法2:dfs,recursive,in-order class Solution { public: void helper(TreeNode* root,vector<int>&res,int level){ if(!root) return; if(res.size()<level 1){ res.resize(level 1); } res[level]=root->val; //根 helper(root->left,res,level 1);//左 helper(root->right,res,level 1);//右 } vector<int> rightSideView(TreeNode* root) { // vector<int> res; helper(root,res,0); return res; } };
相关推荐: