ARTS-01

Algorithm

leetcode 112: Path Sum

    public boolean hasPathSum(TreeNode node, int sum) {
        if(node == null) return false;
        if(node.val == sum && node.left == null && node.right == null) return true;
        return hasPathSum(node.left, sum - node.val) ||
            hasPathSum(node.right, sum - node.val);
    }

leetcode 113: Path Sum II

    public List<List<Integer>> pathSum(TreeNode root, int sum) {
        List<List<Integer>> result = new ArrayList<>();
        List<Integer> list = new ArrayList<>();
        pathSum(root, sum, result, list);
        return result;
    }
    
    private void pathSum(TreeNode node, int sum, List<List<Integer>> result, List<Integer> list) {
        if (node == null) return ;
        list.add(node.val);
        if (node.val == sum && node.left == null && node.right == null) {
            result.add(new ArrayList(list));
            list.remove(list.size() - 1);
            return ;
        }
        pathSum(node.left, sum - node.val, result, list);
        pathSum(node.right, sum - node.val, result, list);
        list.remove(list.size() - 1);
    }

leetcode 437 Path Sum III

    public int pathSum(TreeNode node, int sum) {
        if(node == null) return 0;
        return pathSum(node.left, sum) + pathSum(node.right, sum) + pathSumFrom(node, sum);
    }
    
    private int pathSumFrom(TreeNode node, int sum) {
        if(node == null) return 0;
        return (node.val == sum ? 1 : 0) + pathSumFrom(node.left, sum - node.val) + pathSumFrom(node.right, sum - node.val);
    }

Review

这是 Quora 上的一个帖子 What are some of the most basic things every programmer should know?。里面讨论了程序员都应该知道的一些常识,我摘录了一些在下面。

  • If it's not tested, it doesn't work.
  • Don't reinvent the wheel, library code is there to help.
  • Code that's hard to understand is hard to maintain.
  • Code that's hard to maintain is next to useless.
  • Magic numbers are bad.
  • If there is a bug, the user will find it.
  • A code review is not a criticism.
  • Eat your own dog food — fixing bugs in your own code helps you code better and improves your understanding.
  • Fewer features for better code is always the right answer in the end.
  • There’s always a better way.

Tip

在 github 上删除一个仓库。

进入你要删除的 Repository --> Settings --> Danger Zone --> Delete this repository.

Share

人和计算机很相似。

计算机设备有好坏之分,人也一样。所以我们需要坚持锻炼。

计算机最核心的组成有三部分:输入,计算,输出。人也一样,所以我们需要读书,思考和输出。

输入的数据并不一定都正确,可能会有脏数据,所以需要清理。读书也一样,书有好坏之分,一定要读好书。坏书无益,反而有害,就像脏数据会影响最终结果一样。

对同一个问题的求解,不同算法的效率可能有天壤之别。对应于人呢,就是不同的知识架构、不同的思考模式之间的效率也会有很大的区别。而且在算法中,我们往往可以用空间换取时间。所以,你的知识储备对思考的效率也会有很大的影响。

扫描二维码关注公众号,回复: 7095581 查看本文章

计算机需要向人类展示它们计算的结果,或者告知一个答案,或者方便人类修订程序。人也一样,需要向世人展示自己思考的结果。或者告诉世人答案,或者和其他人交流思想。

猜你喜欢

转载自www.cnblogs.com/thomas-hzp/p/11409724.html