ARTS打卡第三周

Algorithm:Leetcode: 80. Remove Duplicates from Sorted Array II

Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twice and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
Example 1:
Given nums = [1,1,1,2,2,3],

Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3 respectively.

It doesn’t matter what you leave beyond the returned length.
Example 2:
Given nums = [0,0,1,1,1,1,2,3,3],

Your function should return length = 7, with the first seven elements of nums being modified to 0, 0, 1, 1, 2, 3 and 3 respectively.

It doesn’t matter what values are set beyond the returned length.

常规思路:
做完简单版本的题目 26. Remove Duplicates from Sorted Array ,很自然想到用一个变量记录相同数字是否出现了两次,于是就有了下面的版本。

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

Review: The End of App Stores Is Rapidly Approaching

这篇文章主要讲述了一种新的应用形态PWA(Progressive Web Application),这是一种基于浏览器的web应用,但是能够提供和原生APP差不多的使用体验。PWA将会影响到Google Store和Apple Store,因为后者主要通过售卖APP盈利,PWA使得人们能够不通过APP Store就能使用各种APP。

用户可以通过浏览器应用市场(Browser Market)中的按钮安装这种应用,它在一个独立的浏览器窗口中呈现,也会创建桌面快捷方式,界面看上去和一个桌面应用差不多。

谷歌公司已经在Android设备上尝试PWA应用有一段时间了,但是苹果公司对于在它的移动设备上实施PWA标准一直不太积极。总体来看,应用市场的双寡头(谷歌和苹果)都提倡在各自平台使用原生应用,因为这是它们利润的来源之一。

有调查显示,PWA在开发者中越来越流行。微软在2018年末声明允许开发者通过其APP Store展示PWA应用,现在它还计划在其APP Store中添加网络上发现的PWA应用。谷歌也计划在2019年底做成类似的事情。

如果苹果不支持PWA的发展,其吸引力可能会大大减弱。但苹果这样做可能会导致反垄断调查和巨额罚款。

作者认为现在人们越来越多的使用浏览器了,使用浏览器作为应用平台是大势所趋。巨头们应该走出封闭,拥抱开放的互联网。

drag one’s heel (因不情愿而)拖拖拉拉地做

Tip:

Linux下查看端口占用情况的命令:lsof -i:8080
Maven查看依赖情况的命令:mvn dependency:tree
Maven分析依赖的命令:mvn dependency:analyze

Share:

7 important lessons about programming that I’ve learned at 17

  1. 没有谁能无所不知
    你需要努力做到:
    1.1 提升解决问题的能力
    1.2 提升团队协作和交流的能力
    1.3 提升对编程概念和编程语言的理解
    1.4 创建一些很酷的项目来展示你的工作
    1.5 专注于写出高效简洁的代码

  2. 不要怕写的代码有bug
    写出bug才能学到东西,不写bug表示你对这一套已经很熟悉了,没有什么可提升的了。

  3. 正规的计算机教育不是必须的
    有机会参加正规计算机课程或者编程夏令营,就去吧,但这不是必须的。如何高效学习才是最重要的。

  4. 利用搜索引擎是一个合法技能
    学会一些小技巧来提升搜索资料的能力。

  5. 三思而后写代码
    第一个跳进头脑的解决方案往往不是最好的。写代码前最好想清楚,可以节省重构和解决bug的时间。

  6. 小心对待辅导课程
    编程课程可以很快帮助你上手,但是会知其然不知其所以然。最好的学习方式是创建好自己的工程,少copy一些代码,多自己写代码,多看看官方解释。就像拼图一样,拼出一个可以工作的程序。你能从中学到很多。

  7. 制表符比空格好
    写代码时,使用制表符比一次次敲击空格要好(在某些语言比如python中,空格是语法的一种,使用制表符时就要小心了)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值