zoukankan      html  css  js  c++  java
  • 左耳听风-ARTS-第4周(2019/4/21-2019/4/27)

    Algorithm

    本周的算法题是删除已排序数据中的重复数字(https://leetcode.com/problems/remove-duplicates-from-sorted-array/)。这道题比较简单,基本思路是从开头比较,遇到不同的数字,就进行替换

    public static int removeDuplicates(int[] nums) {
            if (nums == null || nums.length == 0) {
                return 0;
            }
    
            int i = 0;
            for (int j = 1; j < nums.length; j++) {
                if (nums[i] != nums[j]) {
                    i++;
                    nums[i] = nums[j];
                }
            }
    
            return i + 1;
        }

    Reading

    这周看的英文文章是《Apply Functional Programming Principles》(https://97-things-every-x-should-know.gitbooks.io/97-things-every-programmer-should-know/content/en/thing_02/),本文中作者鼓励使用函数式编程。掌握函数式编程可以大大提高代码质量。深入理解和应用函数式编程,你的设计会有更高的引用透明性。引用透明性是指在给定相同输入的情况下,无论何时何地调用,函数总会给出相同的结果。命令式代码的缺陷可归因于可变变量。最终的结果是把函数当参数来用,而不是引用成员变量。这样更易于debug,更易于定位非法值的引入。之前是不知道函数式编程的这些好处的。

    Tip

    Java中HaseSet采用散列表数据机构快速的查找对象。散列表为每个对象计算一个散列码(hash code),由对象的实例域产生的一个整数,所以不同数据域的对象将产生不同的散列码。在自定义类中,要保持hashCode()和equals()兼容。

    Java中,散列表用链表数组实现,每个链表成为桶(bucket)。要想查找表中对象的位置,需要先计算对象的散列码,对桶数取余,得到的结果就是这个对象桶数的索引。如果该桶没有其他元素,直接插入桶中就行。如果桶被占满,这种现象被成为散列冲突(hash collision)。这时就需要与桶中所有对象进行比较,查看该对象是否已经存在。如果散列码是合理且随机分布的,桶数足够大,需要比较的次数就会少。

    Share

    Java中关于集合的总结(https://www.cnblogs.com/minguo/p/10746720.html

  • 相关阅读:
    特征可视化技术(CAM)
    特征可视化技术(CAM)
    attention
    attention
    Aggregated Residual Transformations for Deep Neural Networks(ResNeXt)
    attention
    attention
    位姿估计
    attention
    通过几个例子看下seajs模块标识符(有图有真相)
  • 原文地址:https://www.cnblogs.com/minguo/p/10740770.html
Copyright © 2011-2022 走看看