ARTS打卡6-编程是马拉松

Algorithm做算法题,Review点评英文文章,Tip总结技术技巧,Share做技术分享。每周打卡一次,这就是ARTS打卡。

1. 做算法题

第135题,矩阵中负数个数

给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。

请你统计并返回 grid负数 的数目。

解题思路1:

扫描矩阵每一行,遍历每个元素,发现为负数就停止遍历,统计后面有多少元素。

解题代码1:

class Solution:
    def countNegatives(self, grid: List[List[int]]) -> int:
        num_neg = 0
        for grid_row in grid:
            for j in range(len(grid_row)):
                if grid_row[j] < 0:
                    num_neg += len(grid_row) - j
                    break
        return num_neg

解题思路2:

由于是非递增排列,可以用二分法快速查找每一行的负数,每行查找的实践复杂度从O(n)降为O(logn)。

解题代码2:

class Solution:
    def countNegatives(self, grid: List[List[int]]) -> int:
        num_neg = 0
        j_end = len(grid[0]) - 1
        for grid_row in grid:
            j_start = 0
            while j_start <= j_end:
                j = (j_start+j_end) // 2
                if grid_row[j] < 0:
                    if j == 0:
                        num_neg += len(grid_row)
                        break
                    elif (grid_row[j-1] >= 0 and j > 0):
                        num_neg += len(grid_row) - j
                        break
                    else:
                        j_end = j - 1
                else:
                    j_start = j + 1         
        return num_neg

2.点评英文文章

阅读英文文章:The Key To Accelerating Your Coding SkillsA letter to myself as a fresh software engineer

两篇文章作者都是从过来人的角度,告诉还在山脚下的技术同学,爬上山会遇到什么坑和险。编程不是冲刺跑,而是马拉松。和马拉松很类似,都有一个撞墙期,会遇到需要突破的瓶颈。怎么突破瓶颈,走出舒适区呢?关注细节。编程里处处是细节,把细节处理好,是攀登的阶梯。别怕犯错,人都是从错误中学习的。引用一句话:

The master has failed more times than the beginner has even tried.

大师失败的次数比菜鸟尝试的次数都要多。

3.技术技巧

最近使用Visual Studio Code这个IDE工具,发现这个工具很轻便、很快速。写Python比Pycharm更快速。采用插件式扩展IDE功能,这是一个会生长的IDE。

很多人不知道笔记本触摸板的快捷方式,一般是手边没鼠标,用触摸板临时凑活一下。其实触摸板用起来可以比鼠标更灵活,我已经不使用鼠标了。两指同时在触摸板上下滑动可以翻动页面,三指同时左右滑动可以切换任务,更多技巧参考

4.技术分享

Java几乎是主流编程语言的代名词,而Spring框架成为Java开发的事实标准。推荐一下Spring官网的Quick Start,差不多半小时之内就能用Spring Boot搭建起一个最小可执行系统。对快速了解Spring是一个好办法,别浸泡于繁琐的概念之中,亲手实践一下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值