左耳听风-ARTS-第5周(2019/4/28-2019/5/4)

Algorithm

这道题给定一个整型数组和一个整型值,要求就地删除整型数组中和整型值相同的元素(https://leetcode.com/problems/remove-element/)。我的解题思路是从数组开头开始比较,遇到相同的元素,再从数组结尾开始找一个不相同的元素填过来。

public int removeElement(int[] nums, int val) {
        if (nums == null || nums.length == 0) {
            return 0;
        }

        int length = nums.length;

        int i = 0;
        int j = nums.length - 1;

        for (; i <= j; i++) {
            if (nums[i] == val) {
                while (i <= j && nums[j] == val) {
                    j--;
                    length--;
                }

                if (i <= j) {
                    nums[i] = nums[j];
                    length--;
                    j--;
                }
            }
        }

        return length;
    }

Reading

本周阅读的文章是《Ask "What Would the User Do?" (You Are not the User)》(https://97-things-every-x-should-know.gitbooks.io/97-things-every-programmer-should-know/content/en/thing_03/)。我们在设计软件时经常站在自己的角度思考功能、流程,殊不知用户和程序员的思维差异很大,用户并不那么了解计算机,所以更高的效率是看用户操作,怎么使用一款同类型的软件,甚至不要光听他们说,因为他们说的和在真实情况下的操作是有很大的差异的。

Tip

本周在工作中遇到一个微服务架构中数据重复插入的问题,这其中牵扯出一个概念,幂等性(idempotent),指同一请求,重复请求多次,得到的结果是一致。这其中的理解误区是不是每次请求的结果都要一样,可能只有第一次的结果是成功的,而是请求一次和请求多次的结果一样,对服务器的影响是一样的。

Share

Java并发的相关总结,https://www.cnblogs.com/minguo/p/10815546.html

猜你喜欢

转载自www.cnblogs.com/minguo/p/10810986.html