tmp

牛客网——栈的压入、弹出序列(C++)

浪子不回头ぞ 提交于 2020-01-16 14:50:38
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) C++ class Solution { public: bool IsPopOrder(vector<int> pushV,vector<int> popV) { if(pushV.empty() || popV.empty() || pushV.size()!=popV.size()) return false; stack<int> tmp; int n=pushV.size(); int j=0; for(int i=0;i<n;i++) { tmp.push(pushV[i]); while(!tmp.empty()) { if(tmp.top()==popV[j]) { tmp.pop(); j++; } else { break; } } } if(tmp.empty()) { return true; } else { return false; } } }; 来源: CSDN 作者: 我很忙2010 链接: https://blog.csdn.net/qq

把脚本制作成RPM包

天大地大妈咪最大 提交于 2020-01-16 11:35:54
redhat系列的linux使用RPM来管理安装软件很方便,把自己常用的脚本变成RPM包之后,用起来就方便了。 要制作RPM包,首先要看一下RPM包的内容(可以忽略) ....还是不看了把,看不懂.... 2.环境准备: 软件包依赖: rpm-build rpmdevtools 3.设置 制作RPM包 的环境 直接执行命令: rpmdev-setuptree 即可在当前用户的家目录生成如下目录结构 4.拷贝自己的脚本到相应目录 (简单介绍一下我的那三个脚本的功能: customOS.sh:设置历史命令格式,终端(PS1)显示之类的 scanport.sh :扫描目标主机的可用TCP端口 setRM.sh :当rm -rf 删除的目标 大小小于10M,就把目标放入到/tmp目录下 ) 5.配置SPCE文件(重点) 在SPEC目录下,编译ddcw.spec ddcw.spec内容参考如下: Name: ddcw #名字 Version: 2019 #版本 Release: 1125 Summary: this is test RPM Group: Applications/System License: ddcw URL: https://blog.51cto.com/10888845 #Requires: Requires:grep #依赖,即安装这个软件所需的其它RPM包

lintcode 1744. 递增顺序查找树

怎甘沉沦 提交于 2020-01-16 03:34:00
给定一个二叉排序树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。 样例 样例 1 : 输入:root = { 5 , 3 , 6 , 2 , 4 , # , 8 , 1 , # , # , # , 7 , 9 } 5 / \ 3 6 / \ \ 2 4 8 / / \ 1 7 9 输出: { 1 , # , 2 , # , 3 , # , 4 , # , 5 , # , 6 , # , 7 , # , 8 , # , 9 } 解释: 1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 \ 9 样例 2 : 输入 : root = { 8 , 3 , 10 , 1 , 6 , # , 14 , # , # , 4 , 7 , 13 , # } 8 / \ 3 10 / \ \ 1 6 14 / \ / 4 7 13 输出 : { 1 , # , 3 , # , 4 , # , 6 , # , 7 , # , 8 , # , 10 , # , 13 , # , 14 } 解释: 1 \ 3 \ 4 \ 6 \ 7 \ 8 \ 10 \ 13 \ 14 注意事项 给定树中的结点数介于 1 和 100 之间。 每个结点都有一个从 0 到 1000 范围内的唯一整数值。 /** * Definition of TreeNode:

使用shell脚本或命令行 添加crontab 定时任务

半世苍凉 提交于 2020-01-16 00:55:39
crontab 是运维过程中常用的定时任务执行工具 一般情况下在有新的定时任务要执行时,使用crontab -e ,将打开一个vi编辑界面,配置好后保存退出,但是在自动化运维的过程中往往需要使用shell脚本或命令自动添加定时任务。接下来结束三种(Centos)自动添加的crontab 任务的方法: 方法一: 编辑 /var/spool/cron/用户名 文件,如: echo "* * * * * hostname >> /tmp/tmp.txt" >> /var/spool/cron/root 优点:简单 缺点:需要root权限 方法二: 编辑 /etc/crontab 文件, echo "* * * * * root hostname >> /tmp/tmp.txt" >> /etc/crontab 需要注意的是,与常用的crontab 有点不同,/etc/crontab 需指定用名。而且该文件定义为系统级定时任务 不建议添加非系统类定时任务,编辑该文件也需要root权限 方法三: 利用crontab -l 加 crontab file 两个命令实现自动添加 crontab -l > conf && echo "* * * * * hostname >> /tmp/tmp.txt" >> conf && crontab conf && rm -f conf 由于crontab

【Perl示例】整合多个文件

浪子不回头ぞ 提交于 2020-01-15 22:01:08
这个需求是在生信分析中几乎天天用到,各种语言都能实现,也都各有特点。这次以 perl 为例。 已知 文件 CT-VS-CON.All.xls 为全部蛋白表达矩阵及其差异分析结果。 文件 Homo_sapiens.ko 为蛋白KEGG注释结果。 文件 Homo_sapiens.fa 为蛋白鉴定数据库(有的序列以多行展示)。 需求 将以上三表整合为一个表,输出需要的信息。 实现 #! /usr/bin/perl -w use strict; =pod Description: combine table Author: Created: Version: =cut use Getopt::Long; #use Bio::SeqIO; my ($exp,$ko,$fa,$help,$outdir); GetOptions( "exp:s" => \$exp, "ko:s" => \$ko, "fa:s" => \$fa, "outdir:s" => \$outdir, "help|?" => \$help ); $outdir ||= "."; if (!defined $exp || !defined $ko || !defined $fa || defined $help){ die << "USAGE"; description: combine table usage: perl

Linux安装Zookeeper

感情迁移 提交于 2020-01-15 19:25:37
前置条件 必须安装了JDK. yum安装JDK zookeeper下载 zookeeper官方源下载 版本 zookeeper-3.4.14 下载zookeeper // 使用wget下载 wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz // 如果没有wget,可用用yum 安装 // yum install -y wget // 如果不想安装wget工具,那么可以使用rz进行服务器上传 解压zookeeper包 # 解压到当前目录 tar -zxvf zookeeper-3.4.14.tar.gz # 拷贝zookeeper-3.4.14下的所有文件到指定目录 cp zookeeper-3.4.14 /usr/local/zookeeper -r 配置zookeeper cd /usr/local/zookeeper/ # 配置zoo.cfg文件 cd conf # 从模板创建配置文件 cp zoo_sample.cfg zoo.cfg # 编辑zoo.cfg vim zoo.cfg # 修改内容 dataDir=/tmp/zookeeper/data dataLogDir=/tmp/zookeeper/log 创建数据、日志目录 mkdir -p

Linux中文件MD5校验

巧了我就是萌 提交于 2020-01-15 02:59:15
md5sum命令用于生成文件的md5数字摘要,并可以验证文件内容是否发生了改变,间接地还可以检验两个文件内容是否完全相同。因为md5sum是读取文件内容来计算校验码的,因此只能验证文件内容,而无法验证文件属性。 [root@xuexi ~]# cp -a /etc/fstab /tmp/fstab [root@xuexi ~]# cp -a /etc/fstab /tmp/fstab1 生成文件的md5值。 [root@xuexi ~]# md5sum /tmp/fstab /tmp/fstab1 a612cd5d162e4620b442b0ff3474bf98 /tmp/fstab a612cd5d162e4620b442b0ff3474bf98 /tmp/fstab1 发现这两个文件md5值完全一样,也就说明这两个文件完全相同。 由于生成的md5信息中,每个md5值后都紧跟着对应的文件的路径(可能是相对路径),于是将生成的md5保存到某个文件中,以后可以使用该文件来检查md5值对应文件内容是否发生了修改。 例如,将上述两个文件的md5信息保存到fs.md5sum中,然后使用"md5sum -c"可以检查源文件是否完整或是否被修改过。这个检查是内容上的,权限和属性等的改变不会影响md5值,所以不会检测出问题。 [root@xuexi ~]# md5sum /tmp/fstab

leetcode102. 二叉树的层次遍历

与世无争的帅哥 提交于 2020-01-14 02:55:02
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 思路: 相比普通层次遍历,此题需要用二维列表输出结果。只需增加一个计数器保存每层结点的数量,每层遍历时,从队列中吐出相应数量的结点,加入列表中,再将此列表加入结果列表末尾。 class Solution : def levelOrder ( self , root : TreeNode ) - > List [ List [ int ] ] : p = root q = [ ] res = [ ] if p : q . append ( p ) tmp = [ ] tmp . append ( p . val ) res . append ( tmp ) n = 1 else : return [ ] while ( q ) : tmp = [ ] count = 0 for i in range ( n ) : p = q . pop ( 0 ) if p . left : q . append ( p . left ) tmp . append ( p . left . val ) count += 1 if p . right : q . append (

安装VMware Tools

守給你的承諾、 提交于 2020-01-14 01:15:28
小记: 1.启动虚拟机中的系统,并将VMtools文件添加到虚拟光驱 2.虚拟机->设置->硬件->CD/DVD->使用ISO映像文件(从VMwareworkstation安装包里找到linux.iso文件),点击确定 3.在VMware workstation选项栏上点:虚拟机->安装或重新安装VMware Tools 4.打开VM,新建一个目录/mnt/cdrom,用于挂载虚拟光驱 Su root (转为root身份进行操作) # mkdir /mnt/cdrom 5.查看/mnt/cdrom文件的内容找到VMtools的文件名 #cd /mnt/cdrom 6.新建一个文件夹如/tmp,将/mnt/cdrom的文件拷贝过来 # mkdir /tmp/cdrom cp /mnt/cdrom/VMwareTools-xxxxx.tar.gz /tmp/cdrom/ 7.Tar解压VMwareTools-xxxxx.tar.gz #tar –zxv –f VMwareTools-xxxxx.tar.gz 如果显示文件为只读文件,解压不成功,可以改成-zx –f就能运行 8.解压完毕之后,再cd到/tmp/cdrom目录下的vmware-tools-distrib文件夹 #cd /tmp/cdrom/vmware-tools-distrib 9.运行该目录下的vmware

LC68. 文本左右对齐

牧云@^-^@ 提交于 2020-01-13 13:33:16
这个题太无聊了 /** * @Classname Solution1 * @Description TODO * @Date 2020/1/13 0:36 * @Author SonnSei */ public class Solution1 { public static List < String > fullJustify ( String [ ] words , int maxWidth ) { Stack < String > stack = new Stack < > ( ) ; for ( int i = words . length - 1 ; i >= 0 ; i -- ) { stack . push ( words [ i ] ) ; } List < String > ret = new ArrayList < > ( ) ; while ( ! stack . isEmpty ( ) ) { ArrayList < String > list = new ArrayList < > ( ) ; int cnt = 0 ; while ( ! stack . isEmpty ( ) && cnt + stack . peek ( ) . length ( ) + list . size ( ) <= maxWidth ) { cnt += stack .