《左耳听风》-ARTS-打卡记录-第二十四周

坚持不懈是一句正确的废话。前段时间,我在我的读者群中发起了一个名为 ARTS 的活动。每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。我希望大家可以坚持一年,但是我也相信,能够坚持下来的人一定很少,绝大多数人都是虎头蛇尾的,但是我依然相信会有人坚持下来的。
——陈皓《左耳听风》98 | 高效学习:深度,归纳和坚持实践

Algorithm

上周的二维数组查找元素的效率比较低,今天来学习下比较高的解法。
在这里插入图片描述
之前那种解法不仅蹩脚,而且还有些画蛇添足的问题:使用了二重循环,而且还要对总列数和列下标进行修改,思路不是特别明晰。分析其根因,是因为自己陷进了二维数组必须要写两重循环的思维定式中了。其实平时用两重循环是为了遍历元素,而这道题中它并非是完整遍历,而是根据条件去决定元素的走向。因此可以采用一重循环,然后把循环条件设成和行列都相关的。下面的代码就清晰了:

class Solution {
public:
    bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
        int nRows = matrix.size();
        if (nRows == 0)
        {
            return false;
        }

        int nColumns = matrix[0].size();
        int nRow = 0;
        int nCol = nColumns - 1;
        //元素访问并非是规律地内外层遍历,而是根据情况改变i和j。所以一重循环就可以了。
        while (nRow < nRows && nCol >=0)
        {
            if (matrix[nRow][nCol] == target)
            {
                return true;
            }
            else if (matrix[nRow][nCol] > target)
            {
                nCol--;
            }
            else
            {
                nRow++;
            }
        }
        return false;
    }
};

Review

Before You Refactor在你重构前(97 Things Every Programmer Should Know 6/97)

Tips

  1. 睡前可以用智能音响自动播放一些冥想轻音乐,让自己身体进入到放松状态,同时也是在提醒自己要早睡。这招对于我达成早睡有奇效。
  2. 感觉疲劳的表现:肌肉酸痛.如果能把这个酸痛给缓解,疲劳应该就会缓解
  3. 不要轻易去重新编译整个pro工程,如果出现了问题就去重新编译那些最近修改过的。
  4. 观念转换: 有个任务要去完成,我好累,不相干. -> 有个可以运用重构,学习非阻塞编程的机会(平常没时间和机会,),而且是个大项目,我不能浪费掉这些机会.

Share

Qt创建和使用动态库(共享库)的例子

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingLife99

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值