ARTS Week 7

Dec 9, 2019 ~ Dec 15, 2019

Algorithm

Problem 38.Count And Say 外观数列 题目链接

题目描述: 外观数列 是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前六项及其说明如下:

  1. 1 // base
  2. 11 // 描述[1]:1个1 -> 11
  3. 21 // 描述[2]:2个1 -> 21
  4. 1211 // 描述[3]:1个2,1个1 -> 1211
  5. 111221 // 描述[4]:1个1,1个2,2个1 -> 111221
  6. 312211 // 描述[5]:3个1,2个2,1个1 -> 312211

解题思路:1是一个初始情况,需要单独处理。对字符串进行遍历,先获得字符串中的开头的数字,然后判断下一个数字是否与前面数字相同,若相同,则计数加一。若不相同,则通过 res = res + str(num) + tmp 语句更新结果,同时将数字替换为当前的数字

通过的代码如下:

class Solution:
    def countAndSay(self, n: int) -> str:

        def read(string: str) -> str:
            tmp = ''
            num = 0
            res = ''
            for i in range(0, len(string)):
                if string[i] == tmp:
                    num += 1
                else:
                    if i != 0:
                        res = res + str(num) + tmp
                    tmp = string[i]
                    num = 1
            res = res + str(num) + tmp
            return res

        res = '1'
        for i in range(n-1):
            res = read(res)
        return res

Review

接下来的几周,我准备简单 Review 每个程序员需要知道的97件事(英文名:97 Things Every Programmer Should Know)。原文链接。初步计划为每周5个小内容。下面是本周的5个小内容:

  • 谨慎行动(Act with Prudence) 原文链接
    无论计划表看起来时间多么充裕,但总是无法避免遇到问题。当你在“尽快地做”和“做正确的事”之间选择“尽快地做”时,它可能会为以后带来隐患,一般称其为技术债务。技术债务和贷款一样,虽然你可以从短期受益,但利息需要尽快还清。利息包括潜在的bug,不完整的测试案例,等等。如果不及时偿还利息,那么问题将会越来越多,随着问题的增多,想要修正某一问题将会变得困难,就好比利滚利一样,最后无力偿还只能宣布破产(软件的生命结束)。
    避免出现上述情况的办法就是尽快处理问题,避免问题的积累。当然,更好的办法便是谨慎行动,减少可能会带来的问题。
  • 使用函数式编程原则(Apply Functional Programming Principles) 原文链接
    函数时编程有利于提高代码的质量,因为只要函数一旦确定,那么每一个输入的情况,其输出结果是可以预测的。函数的功能越单一,可以减少依赖,同时方便进行测试和改进。函数式编程的一大优点便是避免了面向对象中那复杂的依赖关系,以及成员之间可能会发生的变化。
    当然,面向对象也有其相应的优点,比如面向对象可以有效处理业务规则的复杂性。函数式编程与面向对象编程就好比同一事物的阴阳两面。
  • 多试着问一问自己“用户会怎么做” (Ask "What Would the User Do?" (You Are not the User)) 原文链接
    我们总是错误地认为他人遇到问题的思考方式、思考过程会和自己一样。但事实上并非如此,每个人的差异巨大,当遇到问题时的处理方式也千差万别。因此,为了保证软件对用户的可用性,我们需要从用户的角度来思考,想清楚他们需要什么,但把自己想象成用户并不容易,更好的方式去问用户,了解其内心的想法。不幸的是,很多的用户的表达能力不是很好,他们很难用准确的语言来描述他们需要什么,因此需要一定的沟通技巧来引导用户,或者观察用户的行为以推测他们的需求。
  • 利用自动化工具检查编码标准(Automate Your Coding Standard)原文链接
    为整个项目/团队设置统一的编码标准有利于管理。这些编码标准包括缩进、变量/函数等的命名以及其他。为了能有效地控制编码标准,需要利用一些自动化工具,可以进行监测,发现不符合规范的代码,甚至可以给出修改建议等
  • 简单便是美(Beauty Is in Simplicity) 原文链接
    我们在代码中经常有对可读性、可维护性、可开发速度以及追求美的需求。那么什么样的代码是美的呢,柏拉图曾说过美源自简约。在简单代码中,每个单独的模块保持简单,并承担简单的任务,系统各个模块联系也同样简单。代码的可读性、可维护性比较高,同时再开发增加新的模块时也比较容易。

Tips

gcc编译多线程的程序需要增加 -lpthread 选项 或者 -pthread 选项。

Sharing

在 Review 部分,简单的讲述了5个,有一些内容是我之前也清楚的,比如考虑用户,良好的编码规范。也有一些是有所耳闻的,比如谨慎行动,简单便是美。还有一些是之前从未了解过的,比如使用函数式编程,自己之前也从未接触过函数式编程,所以即使读完以后也不甚了解,在网上查阅资料后,才知道 Haskell 是典型的函数式语言,希望自己能抽空来学习一下。

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

时间: 2024-10-31 12:13:59

ARTS Week 7的相关文章

error:Please check whether you installed aRts correctly or use

编译kdelibs-3.5.10.tar.gz checking whether uic supports -L ... yes checking whether uic supports -nounload ... yes checking if Qt needs -ljpeg... no checking for rpath... yes checking for KDE... will be installed in /usr/local/kdelibs3checking grepping

KDE声音服务器 arts

arts介绍arts是KDE的核心声音系统,支持多音频流.全双工.网络声音请求.ALSA与OSS驱动后端.JACK声音服务器后端等扩展,它既是声音服务器,也 提供一套音频软件的开发类库.对于KDE3.x系统来说arts是不可缺少的一部分,KDE中几乎所有与声音有关的特性都和arts有平滑稳定的集成.由于arts是其作者的个人秀,在2004年底作者宣布终止对arts的维护后它已经很难再作出进一步的突破,这之后的更新大多都是其他志愿者的零敲碎 打,而且其艰涩的开发框架对后来者也是一个接手门槛.尽管a

ARTS第五周

ARTS第五周 ARTS是什么? Algorithm:每周至少做一个leetcode的算法题: Review:阅读并点评至少一篇英文技术文章: Tip/Techni:学习至少一个技术技巧: Share:分享一篇有观点和思考的技术文章. Algorithm 题目:买卖股票的最佳时机 IV 解题思路 这是LeetCode上买卖股票系列的最后一题,也是难度最大的一题.这里我们用标准的动态规划算法来解这道题,既然是用动态规划的办法,那就要先定义出动态规划的状态和状态转移方程. 状态:根据题意,我们需要定

ARTS第六周

ARTS第六周 ARTS是什么? Algorithm:每周至少做一个leetcode的算法题: Review:阅读并点评至少一篇英文技术文章: Tip/Techni:学习至少一个技术技巧: Share:分享一篇有观点和思考的技术文章. Algorithm 题目:141. Linked List Cycle 解题思路 本题是链表相关的一道题,题目给出一个链表,问我们这个链表中是否有环.题目中给出了三个例子来帮助我们分析是否有环,我们可以简单理解为,判断链表中是否有节点被超过两个节点的next指针指

ARTS第七周

ARTS是什么? Algorithm:每周至少做一个leetcode的算法题: Review:阅读并点评至少一篇英文技术文章: Tip/Techni:学习至少一个技术技巧: Share:分享一篇有观点和思考的技术文章. Algorithm 本周的算法题是一道关于链表的题目19. Remove Nth Node From End of List,给定一个列表,要求移除倒数第n个节点,并返回头结点. ? 解题思路 由于我们并不知道列表有多长,所以得遍历列表探测当前节点是否是列表尾节点,又因为我们需要

ARTS第八周

ARTS是什么? Algorithm:每周至少做一个leetcode的算法题: Review:阅读并点评至少一篇英文技术文章: Tip/Techni:学习至少一个技术技巧: Share:分享一篇有观点和思考的技术文章. Algorithm 题目:206. Reverse Linked List 解题思路 题目要求反转列表,即原本指向后一个节点的当前节点转而指向它的前一个节点,因此我们使用两个指针来分别表示当前节点和前一个节点,调转当前节点指针指向前一个后,然后依次遍历.. 代码 public L

ARTS第九周

ARTS第九周 ARTS是什么? Algorithm:每周至少做一个leetcode的算法题: Review:阅读并点评至少一篇英文技术文章: Tip/Techni:学习至少一个技术技巧: Share:分享一篇有观点和思考的技术文章. Algorithm 题目:21. Merge Two Sorted Lists 解题思路 此题要求我们合并两个排好序的链表,合并之后的链表要求也是有序的,因此我们在每次做合并操作的时候需要比较两个链表头节点的大小,较小的那个节点加到新链表的尾端. 同时,取较小节点

ARTS第十周

ARTS第十周 ARTS是什么? Algorithm:每周至少做一个leetcode的算法题: Review:阅读并点评至少一篇英文技术文章: Tip/Techni:学习至少一个技术技巧: Share:分享一篇有观点和思考的技术文章. Algorithm 题目:20. Valid Parentheses 解题思路 1.根据题意需要进行括号配对,当遇到左括号的时候需要存起来,以便遇到右括号的时候去取出来进行配对:当遇到右括号的时候就直接去和保存的左括号进行配对. 2.根据配对的特性我们采用栈这种数

AI太复杂?别怕!华为云Model Arts让你分分钟玩转AI!

近两年来,随着全球科学技术的高速发展,AI人工技术已经成了世界各先进国家未来科技发展的焦点,为了能够跟上全球科技发展的大潮流,各国科技界都已集结全部力量,希望能在AI人工智能领域取得有效突破. "未来科技世界是属于AI人工智能的"--仿佛一夜之间,家居,电子产品,电商,汽车,互联网等各种产业都想要搭上AI人工智能这辆通往未来的高速列车,"AI+xx"也成了最新潮的产业布局模式.可是,市场上还有一部分,准确地说是很大一部分传统产业在推进AI的过程中遭遇了瓶颈期--AI

ARTS起始篇

ARTS简要说明(每周需要完成以下四项): Algorithm:每周至少做一道 leetcode 的算法题,编程训练.刻意练习. Review:需要阅读并点评至少一篇英文技术文章,这个是四项里面对我最难的一项.要成为技术高手,英文是必修课. Tip:学习至少一个技术技巧,可以是日常工作中遇到的问题.踩的坑,学习的点滴记录. Share:分享一篇有观点和思考的技术文章.持续的输出,建立自己的影响力. —— 2019.06.08 原文地址:https://www.cnblogs.com/jxl001