第七周的 ARTS,继续加油。

Algorithm

删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
Example1

给定数组 nums = [1,1,2], 
函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 
你不需要考虑数组中超出新长度后面的元素。

Example2

给定 nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。
你不需要考虑数组中超出新长度后面的元素。

解法1

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

Review

How to be a better listener in a world where everyone’s talking

就像公开演讲一样,聆听也是一门需要联系的技能。高层次的聆听是360度聆听,不见听对方说什么,还听他怎样说。低一级的聆听是只听,但没有和说话者完全连接起来,没有肢体语言。最低层次的聆听是注意力在我们自己的事情上,假装在听对方。好的聆听者有下面以下特征:

  • 不是一直安静,他们会提问,促进更深层次的发现
  • 增强对方自尊
  • 是合作者,不是争论者
  • 提供建设性意见 怎样成为一个好的聆听者
  • 看着对方的眼睛
  • 等对方完成后再回答
  • 注意肢体语言
  • 提好的问题
  • 预留空间进行思考和反应
  • 注意听说的比率

Tip

Java 虚拟机是怎样运行 Java 字节码的

要执行 Java 代码首先需要将编译后的 class 文件加载到 Java 虚拟机中。加载后的 Java 类会被存放于方法区中。实际运行时,虚拟机会执行方法区内的代码。Java 虚拟机会在内存中堆和栈来存储运行时的数据。栈内存细分为面向 Java 方法的 Java 方法栈,面向本地方法的本地方法栈,以及存放各个线程执行位置的 PC 寄存器。堆内存主要用于存放类的实例对象。

Share

推荐一本书《网-阿加西自传》

这本自传被《时代周刊》评为“史上最好的传记作品之一”,也是我读过最好的自传,读完整本书,有几点感受比较深 ####1、将厌恶的事做到极致 阿加西多次提到他憎恶网球,被迫从小开始训练,后面多次想放弃,但最终坚持下来,取得伟大的成就。对于大多数人来说,都可能会遇到做自己不喜欢做的事情,是只为完成任务,还是将事情做到极致?当我们把厌恶的事情做好后,可能会有意想不到的收获,也许就不那么厌恶了。 ####2、刻意练习 阿加西的成功再次证明了10000小时理论,7岁开始练习网球,每天击球2500次,一年击球10000次,16岁成为职业球员,22岁就获得第一个大满贯。 ####3、即使刻意练习了1万小时,还是可能会失败 文中多次描述了在很多关键比赛中,阿加西还是输给了对手,在一段时间内,输掉无数比赛,排名从世界第1掉到了第141位。也许你付出了很多,但最终结果可能还是不如所愿,很多时候,成功没那么容易,但是一定不要放弃,付出也会有成长的。 ###4、成功离不开一个默契忠诚的团队 一个了解他的网球教练,一个像父亲一样关爱他的体能教练,一个靠谱聪明的经纪人,由他的发小担任,帮他处理广告等网球外的事务,还有一个牧师好友,听他的倾诉,解决他的心理困惑。