ARTS Week 18

Feb 24, 2020 ~ Mar 1, 2020

Algorithm

Problem 371. Sum of Two Integers(两整数之和) 题目链接

题目描述:给定两个数字,求两个数字之和。不能使用加法运算

思路为:不能使用加法运算,那么可以考虑使用位运算来实现加法。先观察只有一位数的情况:

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0(进位为 1)

这个特性符合异或运算,那么可以通过异或运算来实现无进位加法,那么该如何计算进位呢?我们知道,二进制中有逢二进一,可以通过使用与运算得到进位,但是需要额外左移 1 位,因为 (1 & 1) << 1 = 10。一直循环此过程,直到进位等于 0

但是,Python 中的整数并不是 32 位,因此需要进行特殊处理,采用 MASK 掩码以保证不会超过32位,利用 MAX_INT 来判断是正数还是负数。

通过的代码如下:

class Solution:
    def getSum(self, a: int, b: int) -> int:
        MASK = 0x100000000
        MAX_INT = 0x7FFFFFFF
        MIN_INT = MAX_INT + 1
        while b != 0:
            carry = (a & b) << 1
            a = (a ^ b) % MASK
            b = carry % MASK
        if a <= MAX_INT:
            return a
        else:
            return ~((a % MIN_INT) ^ MAX_INT)

Review

本周继续 Review 每个程序员需要知道的 97 件事(英文名:97 Things Every Programmer Should Know)。原文链接。下面是本周的5个小内容:

  • 使隐形的东西更加可见(Make the Invisible More Visible) 原文链接
    为了避免某些潜在的错误,可以使用以下方式来避免:编写单元测试并通过单元测试;使用相关工具管理项目和 bug;使用增量开发的方式
  • 使用消息传递提供并行系统的可伸缩性(Message Passing Leads to Better Scalability in Parallel Systems) 原文链接
    并发能够显著地提高系统的性能,但是并发中进程间的通信一直是一个问题,文中给出一个建议时使用消息传递,而不是使用共享内存,因为使用共享内存无法保证数据的一致性。
  • 给未来的信息(A Message to the Future) 原文链接
    当过一段时间后,我们很有可能会无法理解我们当初写的代码,为了以便于未来能够理解,我们需要尽可能地做好完整的注释和文档,以便于未来能很快的理解代码
  • 缺少多态的机会(Missing Opportunities for Polymorphism) 原文链接
    多态时面向对象的一大特性,对象可以保持接口一致但不同对象执行不同的操作。善用多态可以节省不少工作量,同时可以便于使用者使用。
  • 测试人员是您的朋友(News of the Weird: Testers Are Your Friends) 原文链接
    大多时候,我们不喜欢测试人员,因为他们总是发现我们错误并告诉我们,像读书时的老师一样。但实际上,我们应该把测试人员当成是我们的朋友,他们帮助我们发现代码中的问题,以便于我们能够改正它,进而避免更大的损失。

Tip

在 Linux 中,用户调用系统调用时,使用系统调用时传递参数时,参数的值会从用户空间复制到内核空间。主要原因如下:

  1. 用户空间程序不能访问内核地址
  2. 无法保证用户空间指针指向的虚拟内存页与物理内存页关联

Share

本周主要是在填上周欠下的坑,虽然花了不少时间,但是还没有填完。。。 :(

原文地址:https://www.cnblogs.com/mengxinayan/p/12388955.html

时间: 2024-11-11 05:50:03

ARTS Week 18的相关文章

越狱Season 1- Episode 18: Bluff

Season 1, Episode 18: Bluff -Michael: Scofield Scofield Michael Scofield Michael Scofield -Patoshik: Doesn't ring a bell 记不起来 -Michael: wind back a while in Gen Pop Cell 40 cell: 囚室 回忆一下大牢房40号囚室? -Patoshik: Gen Pop 大牢房 -Michael: General Population. O

互测六 题解 9.18 圆润的多边形&amp;Takuji与信徒

圆润的多边形: 我们可将所求图形划分如下: 绿色部分是一凸多边形,红色部分为若干个长方形,蓝色部分为若干个扇形. 易证:1.蓝色部分的总和是一个半径为r的整圆:2.红色部分的总和=凸多边形周长*r. 那么现在就只剩下如何计算的问题. 1.对于前12.5%数据,r=0且点坐标成顺时针排列,那么直接作为凸多边形来计算即可: 2.对于前50%数据,点坐标成顺时针排列,这个部分分的做法...我也没想出来... 这是为什么呢...因为这个题,是我受了洛谷P1513的启发而脑补出来的,这道题中有"点坐标成顺

中国VR人才需求占全球18%排名第二,UE4技术美术人才万金难求

虚拟现实持续火爆,行业市场规模也随之水涨船高,未来医疗.娱乐.房地产.教育.旅游等领域还将继续拓展VR技术的应用.资本的入局和技术的发展已经相对稳定,VR行业必将迎来更为迅猛的发展阶段. VR在中国的快速发展有目共睹,短短两年时间已经形成了较为完善的产业链,令人惊叹.而与产业链的快速发展形成鲜明对比的,却是人才的远远落后.近期,全球最大的职场社交平台领英针对全球VR人才进行了一次全面扫描.数据显示,美国VR人才占全球40%,需求占比48%,而中国人才仅为2%,需求却占全球18%,人才短缺现象十分

编译安装Apache(httpd-2.4.18)

httpd有rpm和源码编译的方法,下面介绍一下源码编译安装的方法: 操作系统版本: # cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago) 软件版本:httpd-2.4.18.tar.bz2 下载地址:http://apache.fayea.com/httpd/ 因为2.4版本的http的依赖apr-util.apr和pcre,所以还需要分别安装 软件版本:apr-1.5.2.tar.gz

实例:编译Linux内核3.18.25概要

前提: 将CentOS 7上3.10.0-229.el7.x86_64重新编译一个3.18.25内核 自编译安装,按照自己的硬件平台架构编译,能最适合硬件主机的性能 且按照需要编译模块,可以选择自己需要的包编译 [[email protected] tmp]# uname  -a 一.编译前准备工作 1.宿主机系统 本次编译宿主机:VMware Workstation Pro12 上的CentOS 7.0操作系统 2.开发环境(开发工具,开发库),头文件 [[email protected] y

【美妆讨论】化妆有术!让你重返18岁!

年龄永远是女人的大忌,想要留住年轻,不再为被问到年龄而感到尴尬,来跟小M学习化妆技巧啊,保证让你天天18岁! 技巧一:把皮肤彻底清洁干净 化妆前,一定要用洁面乳清洁皮肤,这是非常关键的一步,对化妆效果有很棒的辅助作用.清洁皮肤主要是为了去除油脂增加皮肤的张力,使化妆品更好地与皮肤贴合,这样妆容不易花掉,而且看起来更加清新通透自然. 技巧二:选择淡黄色粉底液 粉底液有很好的遮瑕效果.深色粉底液少量运用可以使五官看起来更加立体,但不可大面积使用:亚洲人一般的肤色无法驾驭较浅的粉底液,不推荐使用.最佳

MongoDB { code: 18, ok: 0.0, errmsg: "auth fails" } 原因

MongoDB出现 { code: 18, ok: 0.0, errmsg: "auth fails" }  错误的原因: 1.账号密码错误 2.账号不属于该数据库 MongoDB { code: 18, ok: 0.0, errmsg: "auth fails" } 原因,布布扣,bubuko.com

益计算Shprotification.v6.8.15.22+Heat.Balance.v6.12.27.36+Cold.Balance.v2.6.14.18

热增益计算Shprotification.v6.8.15.22+Heat.Balance.v6.12.27.36+Cold.Balance.v2.6.14.18 Andrey.Shirshov.Shprotification.v6.8.15.22 Andrey.Shirshov.Heat.Balance.v6.12.27.36 Andrey.Shirshov.Cold.Balance.v2.6.14.18   "现代ASHRAE标准参考数据用于从人.设备.确定热输入的人工照明,半透明的击剑系数(

7月18晚9点公众号日吸几万粉技巧

财神免费分享课来啦:很久没有做公开课了,这次应粉丝们的要求在7月18号晚上9点,免费分享公众号日吸几万粉技巧,同时有其他问题的还可以现场分享.有兴趣的朋友赶快关注我公众号:caishen780 或扫描下面二维码后回复"听课"按指示进群就行了,名额只有500名,先到先得.迟来进不了的就要等下次了. 作者:互传财神  原文地址:http://www.huchuan6.com/caishen/3693.html  微信公众号:caishen580