2018 12 01 ARTS(7)

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

Algorithm

945. 使数组唯一的最小增量

https://leetcode-cn.com/contest/weekly-contest-112/problems/minimum-increment-to-make-array-unique/ 题目:

  • 给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。
  • 返回使 A 中的每个值都是唯一的最少操作次数。
  • 示例 1:
  • 输入:[1,2,2]
  • 输出:1
  • 解释:经过一次 move 操作,数组将变为 [1, 2, 3]。
  • 示例 2:
  • 输入:[3,2,1,2,1,7]
  • 输出:6
  • 解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。
  • 可以看出 5 次或 5 次以下的 move 操作是不能让数组的每个值唯一的。
  • 提示:
  • 0 <= A.length <= 40000
  • 0 <= A[i] < 40000

这道题目不难,基本算是你只要找到规律轻松解决的类型注意3个点:

  1. 排序,排序之后,然后数组的每个位置上的数据可以根据当前的位置的index和数组的最小值(也就是排序后的数组第一个值)来计算要move几次。
  2. 设置最小值,以及增量,注意那个位置的值大于(index + A[0])的情况,这种情况下,你可以把这个位置的值当成之后的数组的最小值来进行计算,但是你要记得,在这个值这里index要重新设置为0。
  3. 注意空数组的情况(提交失败的教训啊)。

我晓得这样说还是太抽象,直接上代码吧,代码很短很简单,看懂问题不大,有更好的思路欢迎留言交流。

public static int minIncrementForUnique(int[] A) {
        Arrays.sort(A);
        int length = A.length;
        if (length == 0) {
            return 0;
        }
        int min = A[0];
        int result = 0;
        // 遍历的数组,并且注意j的值,j的值会在发现一个最小值的初始化为0。
        for (int i = 0, j = 0; i < length; i++, j++) {
            if (A[i] < min + j) {
                result += (min + j) - A[i];
            } else {
                //当前值大于min+j的时候,说明发现了一个之后的数组的最小值。
                min = A[i];
                j = 0;
            }
        }
        return result;
    }

Review 阅读并点评至少一篇英文技术文章

How “Effective Java” may have influenced the design of Kotlin — Part 1

这篇文章讲了在Effective Java里的关于Java的优良的编码规范在Kotlin中如何去实现,因为Kotlin在Java的原来基础上做了很多改良,所以实现起来并不复杂,我看到这些代码都会觉得,这个代码是真的简单啊。


Tip/Tech:学习至少一个技术技巧

在Notepad++里面按住Alt键再移动鼠标可以进行竖向选择。


Share:分享一篇有观点和思考的技术文章

分享:关于逆商的一些文章以及总结: 上个礼拜的时候看了那个算法专栏里的周末福利的文章,文章的最后提到:一个人最后能不能成事其实和他的逆商大有关系,但是作者就放了一张图,却没有进行一些解释,我后来找了一些资料,大改了理解逆商,我们先看图:

逆商

接下来我们解释一下这个图的含义,逆商的核心就是CORE也就是图上的四个维度:

  • Control 控制感:某人认为他可以在多大程度上影响接下来的问题的走向。简单来说,某人如果一直坚定的相信“我命由我不由天”那这个人的“Control”就是爆炸高的类型,反之,比如某人觉得,人生而有命,逆天改命是不可能的,那就是爆炸低的类型。
  • Origin & Ownership 起因和责任归属:不管这个问题到底是不是自己原因,你会尽多大的努力来解决问题。有时候一个问题发生了,是自己原因,或者不是自己的原因,但是这个维度强的人会尽自己的全力去解决问题,不管发生这个问题是不是自己的原因,不管会产生多大的帮助,都要竭尽全力解决。
  • Reach 影响范围:这个就简单了,比如学习上的问题不要去影响生活,事业上的情绪不要带入到家庭。这个维度高的人会吧问题的影响进行控制在一个小范围内,不会影响别的事情正常运行。
  • Endurance 持续时间:这个维度高点的人会在较短的时间来解决问题,反之就一直回避,放任问题自由。

逆商 - MBA智库百科

AQ for You | Adversity Quotient: Basic principles

What is Adversity Quotient?

The Adversity Response Profile®

转载于:https://my.oschina.net/jamesfuxk/blog/2965617

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值