Dec 2, 2019 ~ Dec 8, 2019

Algorithm

从本周开始,由于要涉及某一算法,但我又有选择困难症。所以我决定在Leetcode刷题的,用ARTS中的算法部分来记录本周值得记录的一道题,也可以理解成某一题目的详解吧。本周的题目如下:

Problem 14. Longest Common Prefix - 最长公共前缀 题目链接

题目描述:给定某一个字符串数组,找到该字符串数组中所有字符串的最长公共子串。如果没有,则返回空字符串。下面是两个例子:

例一:

Input: ["flower","flow","flight"]

Output: "fl"

例二:

Input: ["dog","racecar","car"]

Output: ""

思路:先对特殊情况(没有字符串或者只有一个字符串)进行处理。而后计算出所有字符串中最短字符串的长度,因为公共字符串长度不会超过它。而后从第一个字符串开始遍历,检查某个字符是否在所有字符串中是否出现且出现的位置相同,若是,将该字符加入字符串;若不是,则停止循环。

通过的代码如下

class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if len(strs) == 0:
return ''
if len(strs) == 1:
return strs[0]
lens = []
for i in range(len(strs)):
lens.append(len(strs[i]))
minlen = min(lens)
res = ''
for i in range(minlen):
ch = strs[0][i]
flag = True
for j in range(1, len(strs)):
if ch != strs[j][i]:
flag = False
if flag == True:
res += ch
else:
break
return res

Review

Linux Powertop 的介绍和使用。原文链接。注:下面的内容结合了一些其他文章/资料汇总写成的,在需要时我也会给出链接。

装了 Linux 系统的笔记本电脑或其他类似设备,其电源管理也许并没有Windows下高效。Powertop 便是一个由 Intel 发布的工具,可以用来诊断电池使用情况,哪些设备、进程最消耗电池,以及可以给出相应的优化建议。并且它是开源的,开源协议为GPL-v2.0,Github仓库地址。更多介绍见官网维基百科

在很多发行版的仓库中,都含有 Powertop。安装方法具体如下:

# For Ubuntu/Debian
% sudo apt install powertop
# For RHEL/CentOS
% sudo yum install powertop
# For Fedora
% sudo dnf install powertop
# For Arch/Manjaro
% sudo pacman -S powertop
# For SUSE/openSUSE
% sudo zypper install powertop

powertop的使用也比较简单,具体使用方法如下:

% sudo powertop
PowerTOP v2.9 Overview Idle stats Frequency stats Device stats Tunables
The battery reports a discharge rate of 12.6 W
The power consumed was 259 J
The estimated remaining time is 1 hours, 52 minutes Summary: 1692.9 wakeups/second, 0.0 GPU ops/seconds, 0.0 VFS ops/sec and 54.9% CPU use Usage Events/s Category Description
9.3 ms/s 529.4 Timer tick_sched_timer
378.5 ms/s 139.8 Process [PID 2991] /usr/lib/firefox/firefox -contentproc -childID 7 -isForBrowser -prefsLen 8314 -prefMapSize 173895 -schedulerPrefs 00
7.5 ms/s 141.7 Timer hrtimer_wakeup

最上面的一列,Overview,Idle stats,Frequency stats,Device stats,Tunables 便是各种页面,可以使用 Tab 键在各个页面之间切换。使用 Esc 键可以退出界面。

但是,终端的界面看起来不是很方便(个人感觉),powertop 也提供了将报告生成为 HTML 文件方便进行查看

# 以下几种方式效果都相同
% sudo powertop -r # 在当前目录下生成 HTML 报告,文件名为 powertop.html
% sudo powertop --html # 同上
% sudo powertop --html report.html # 在当前目录下生成 HTML 报告,文件名为 report.html

通过浏览报告,便可以得知哪些进程/设备对电源的消耗较多,且存在可以优化的地方,这样便可以进行相应调整。但是,我相信很多人和我一样,不愿意去阅读详细的报告,只想轻松地达到目的。为了照顾我这样的懒人,powertop 也提供了让其自动调优选项,使用方法如下:

% sudo powertop --auto-tune

Tips

Python中类内使用递归函数的方法如下:

class Example:
def func(self, x):
return self.func(x-1) + 1

Sharing

《左传-庄公·庄公十年》中有句“一鼓作气,再而衰,三而竭”。个人对此有一些感触,前面5周的ARTS还按照时间写下来了,但由于第六七周忙于某些事情,没有来得及写(当然,最主要的问题还是出在自己的时间管理上)。结果导致整整一个多月的 ARTS 延误了,现在我准备重新把荒废的 ARTS 拾起来,先把当初欠下的好几篇补上来。为了能节约发布的时间,所以暂时不打算写好一篇就发一篇,而是把 ARTS 的进度追上当前的周数时,再统一发出。

最新文章

  1. Python WebDriver自动化测试
  2. Initialize the Storage Emulator by Using the Command-Line Tool
  3. json解析:[2]fastjson 使用
  4. ios开发--编码格式
  5. 《大话设计模式》学习笔记0:设计模式的原则 && UML类图
  6. Shell: how to list all db links in oracle DB to generate a flat file (生成dblink列表文件)
  7. Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
  8. Linux 开机报 or type Control-D to continue
  9. Windows7&IIS7.5部署Discuz
  10. HttpGet()和HttpPost()2
  11. Find the Maximum sum
  12. JS的事件绑定、事件流模型
  13. MVC 微信开发获取用户OpenID
  14. ajax高级操作
  15. 启用SQL Server 2014 中的OLE 自动化功能
  16. GIT的基本使用及应用场景
  17. 马加爵遗书 VS 药家鑫遗书
  18. Android开发中常见的设计模式(一)——单例模式
  19. ping端口是否开放(windows,macos,linux)
  20. vue学习五之VueCLi

热门文章

  1. .Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析
  2. [Windows10]记一次修复注册表相关血案:该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置”页面中创建关联。
  3. 如何修改Docker已运行实例的端口映射
  4. linux下安装cmake方法(1)---下载压缩包
  5. VS从标准输入读入文件
  6. 【转】JavaScript 3D图表
  7. java架构之路(多线程)AQS之ReetrantLock显示锁的使用和底层源码解读
  8. 20190918Java课堂记录
  9. UVA540 Team Queue——题解 by hyl天梦
  10. ChoiceFiled MultipleChoiceField ModelChoiceField ModelMultipleChoiceField