ARTS 2019 03 03 (20)

68 篇文章 0 订阅
49 篇文章 0 订阅

ARTS
Algorithm:每周至少做一个leetcode的算法题;
Review:阅读并点评至少一篇英文技术文章;
Tip/Tech:学习至少一个技术技巧;
Share:分享一篇有观点和思考的技术文章;

Algorithm

226. 翻转二叉树

https://leetcode-cn.com/problems/invert-binary-tree/
本周琐事比较多,所以就做了一些简单的关于二叉树的题目,这道题据说很经典?我看到题目下面有段话让我觉得乐了,就是下面这段:

谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。

然后觉得试试,第一次的时候只把值进行了交换,导致出现了错误,后来想了想,其实就是因为没有把左右节点进行交换导致的错误,要注意:

翻转要把节点对应的左右节点都要进行交换。

OK,show the code:

class Solution {
   public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) {
            val = x;
        }
    }
    public TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return root;
        }
        invertOpt(root);
        return root; 
    }
    
    public void invertOpt (TreeNode node) {
         if (node.right != null && node.left != null) {
            TreeNode temp = node.left;
            node.left = node.right;
            node.right = temp;
        } else if (node.right != null && node.left == null) {
            node.left = node.right;
            node.right = null;
        } else if (node.right == null && node.left != null) {
            node.right = node.left;
            node.left = null;
        } else {
            return;
        }
         if (node.left != null) {
            invertOpt(node.left);
        }
        if (node.right != null) {
            invertOpt(node.right);    
        }
    }
}

以上就是代码,非常的简单的递归吧,我发现二叉树这些题目是锻炼递归思维非常好的题目,各种的递归翻转,只要熟练,基本上就会对递归有更加熟练地理解了。

Review

https://www.jcp.org/en/jsr/detail?id=133

JSR 133: JavaTM Memory Model and Thread Specification Revision

这是篇关于Java的内存模型的一个JSR,大意就是说原来的那个些个语言规范啊,虚拟机规范啊,规定的不好,这个JSR就是在之前的基础上进行修订,主要增强了Java的多线程和一些内存类型的功能。描述都是其次。后来的那写个论文啊,才是大部头,看到我直接晕了。大概理解了一下,有关于一些内存的模型的论文。

Tip/Tech

手写了二叉树的查询,插入,删除。很惭愧,还不算熟练。

Share

http://blog.samaltman.com/how-to-be-successful

How To Be Successful
  1. Compound yourself:就是你要做个有复合增长的工作,然而大部分的工作都是线性的
  2. Have almost too much self-belief:要对自己有足够的自信
  3. Learn to think independently:独立思考
  4. Get good at “sales”:擅长销售,你学会如何打动别人
  5. Make it easy to take risks:善于承担风险,其实很多风险本身是不那么可怕的,而奖励往往丰厚
  6. Focus:专注正确的事情,更多人吧时间专注再无关紧要的事情上面
  7. Work hard:努力工作
  8. Be bold:要大胆,所谓撑死胆大的,饿死胆小的
  9. Be willful:要任性?就是要变得有那种感觉,你可以按照自己的方式来改变世界
  10. Be hard to compete with:有竞争力。这个说的容易
  11. Build a network:建立你你自己社交网络,就像团队啊,人脉啊这些
  12. You get rich by owning things:你通过拥有东西来致富
  13. Be internally driven:内部驱动,一切发自内心的。就是你自己很愿意相信这东西能成这种感觉。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值