ARTS Week 19
Algorithm
本周的 LeetCode 题目为 5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。例如输入:s = "babad",输出:"bab"
本题使用动态规划进行解决,动态规划的核心就在于找到状态转移方程。通过观察发现,回文串去掉首尾两个字符后,依然是回文串,即 dp[i][j] = dp[i+1][j-1] ^ (s[i] == s[j])
,再加上只有一个或两个字符时作为初始条件,因此状态转移方程为:
dp[i][i] = true,
dp[i][i+1] = (s[i] == s[i+1]),
dp[i][j] = dp[i+1][j-1] ^ (s[i] == s[j]), j-i>1
根据状态转移方程,很容易写出代码,主要要记录下最长回文子串的开始索引和长度,以方便得到该回文子串。
class Solution {
public String longestPalindrome(String s) {
int length = s.length();
if (length < 2) {
return s;
}
int maxLength = 1;
int begin = 0;
boolean[][] dp = new boolean[length][length];
for (int i = 0; i < length; i++) {
dp[i][i] = true;
}
for (int right = 1; right < length; right++) {
for (int left= 0; left < right; left++) {
if (s.charAt(left) != s.charAt(right)) {
dp[left][right] = false;
} else {
if (right - left < 3) {
dp[left][right] = true;
} else {
dp[left][right] = dp[left+1][right-1];
}
}
if (dp[left][right] == true && (right - left + 1 > maxLength)) {
maxLength = right - left + 1;
begin = left;
}
}
}
return s.substring(begin, begin+maxLength);
}
}
Review
本周 Review 的英文文章为:不要怕,你的内存是够用的!
因为 Linux 系统中存在着磁盘缓存,其目的是为了让系统变得更快。当你需要更多的内存时,磁盘缓存会自动释放来满足应用或进程的需要。虽然你无法关闭,但是你想强制清除目前的缓存,可以运行 echo 3 | sudo tee /proc/sys/vm/drop_caches
。
但是我们在使用 top
或 free
命令查看内存时,却经常发现内存都已经被使用了,但这实际上是因为 Linux 系统中的 free
和 available
和我们平时的概念有所不同,它们的对比表如下:
内容情况 | 你会称它为 | Linux 系统会称它为 |
---|---|---|
被应用所使用 | Used | Used |
被使用,但可以使得其可用 | Free (or Available) | Used (or Available) |
没有被使用 | Free | Free |
通过查看 free
命令显示结果中 available
这一列,你便可以得到现在系统中实际可用的内存。
$ free -m
total used free shared buff/cache available
Mem: 1504 1491 13 0 855 792
Swap: 2047 6 2041
最后作者给出了具体的何时需要担心内存情况的建议。当下面的情况发生时,你并不需要担心内存是否够用:
free
值接近了0used
值接近了total
值available
值(或者free
+buffers/cache
的和)是足够的(占total
20% 以上)swap
那一行中used
的值没有改变
下面是值得注意的真正低内存可用的警告信号:
available
值(或者free
+buffers/cache
的和) 接近0swap
那一行中used
的值在增加或者波动- 使用
dmesg | grep oom-killer
来查看OutOfMemory-killer
是否在工作
Tip
Python 中一个二维数组按列计算每一列的平均值,需要使用 numpy 包,调用 numpy.average(data, axis=0)
语句来执行,当 axis=1
时则为按行计算均值,示例如下:
import numpy
data = [[1, 2], [3, 4]]
avg = numpy.average(data, axis=0)
print(avg) # [2, 3]
Share
祝大家新年快乐,身体健康,万事如意!
ARTS Week 19的更多相关文章
- 【ARTS】01_17_左耳听风-20190304~20190310
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- Mediaplayer error (-19,0)
Android MediaPlayer 发生 error (-19,0) 错误解决方法. 引起原因:由于多次实例化MediaPlayer.start() 进行播放操作引起的.由于没有及时释放内存资源导 ...
- 录像时调用MediaRecorder的start()时发生start failed: -19错误
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#)
CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#) 效果图 本文解决了将OpenGL渲染出来的内容保存到PNG图片的方法. 下载 CSharpGL已在GitHub开 ...
- ABP(现代ASP.NET样板开发框架)系列之19、ABP应用层——审计日志
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之19.ABP应用层——审计日志 ABP是“ASP.NET Boilerplate Project (ASP.NET ...
- js正则表达式校验非负浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js正则表达式校验非负整数:^\d+$ 或 ^[1-9]\d*|0$
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js正则表达式校验非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- C#开发微信门户及应用(19)-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)
我们知道,企业号主要是面向企业需求而生的,因此内部消息的交流显得非常重要,而且发送.回复消息数量应该很可观,对于大企业尤其如此,因此可以结合企业号实现内部消息的交流.企业号具有关注安全.消息无限制等特 ...
随机推荐
- 大数据学习day38----数据仓库01-----区域字典的生成
更多内容见文档 1. 区域字典的生成 mysql中有如下表格数据 现要将这类数据转换成(GEOHASH码, 省,市,区)如下所示 (1)第一步:在mysql中使用sql语句对表格数据进行整理(此处使用 ...
- ORACLE profile含义,修改,新增
profiles文件是口令和资源限制的配置集合,包括CPU的时间.I/O的使用.空闲时间.连接时间.并发会话数量.密码策略等对于资源的使用profile可以做到控制会话级别或语句调用级别.oracle ...
- 【Spring Framework】Spring入门教程(七)Spring 事件
内置事件 Spring中的事件是一个ApplicationEvent类的子类,由实现ApplicationEventPublisherAware接口的类发送,实现ApplicationListener ...
- 【转】在本地运行leetcode核心代码
https://zhuanlan.zhihu.com/p/342993772 在调用solution之前,要加一句 Solution solution; solution.函数名(输入变量); 以下是 ...
- C/C++ Qt 数据库与Chart历史数据展示
在前面的博文中具体介绍了QChart组件是如何绘制各种通用的二维图形的,本章内容将继续延申一个新的知识点,通过数据库存储某一段时间节点数据的走向,当用户通过编辑框提交查询记录时,程序自动过滤出该时间节 ...
- JavaOOP对象和封装
对象: 前言: 在程序员眼中,世界万物皆为对象.世界上有两种人,一种是懂二进制的人,一种就是不懂二进制的人. 面向对象设计的过程就是抽象的过程. 步骤: 第一步:发现类 第二步:发现类的属性 第三步: ...
- [BUUCTF]PWN——铁人三项(第五赛区)_2018_rop
铁人三项(第五赛区)_2018_rop[32位libc泄露] 题目附件 解题步骤: 例行检查,32位,开启了NX保护 试运行一下程序,一开始让我们输入,然后直接输出"Hellow,world ...
- M语言中的引用(Power Query 之 M 语言)
名词 查询表 函数 行{}/列[] 单元格 表(Table) 列表(List) 记录(Record) 引用[查询表] =查询表表名 引用[应用的步骤] =步骤名 引用表中的[单元格](深化) =表{行 ...
- CF938B Run For Your Prize 题解
Content 有两个人,一个在 \(1\) 处,一个在 \(10^6\) 处,在他们之间有 \(n\) 个奖品,第 \(i\) 个奖品在 \(a_i\) 处.一开始在 \(1\) 处的人每秒可向右移 ...
- WPF控件界面自适应
之前就听说WPF流式布局,顺滑的很.但由于专业只学习了winform,工作对界面的要求并不高一直没去玩它.目前公司一些软件都是WPF布局,加上工作内容涉及Socket通讯较多,决定用WPF做一个通讯小 ...