2015-12-09
LeetCode第22题:Generate Parenthese总结

题目

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

For example, given n = 3, a solution set is:

((())), (()()), (())(), ()(()), ()()()

  • 大意:给定n对括号,写一个函数来生成所有正确的配对串。

思路

生成所有的可能,然后注意检测是不是符合要求。

代码

(Python)

class Solution(object):
    def isValid(self, s):
        """
        :type s: str

Read More
 2015-12-09
LeetCode第21/23题:Merge Two Sorted Lists和Merge k Sorted Lists总结

题目一

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

  • 大意:合并两个列表,返回一个新的列表,新的列表要把前边给定的两个列表链接起来。

思路:

其实就是把两个有序列表变成一个有序列表,只要维护两个指针,分别将当前最小的数复制到第三个列表中,然后将相应指针后移即可。道理很简单。

需要注意到是,python中,如果一个变量等于一个列表(比如,list1为一个列表,定义a1 = list1),则这个变量(a1)其实类似c中的指针的概念(a1和list1等价,都是“指针”),并不是拷贝了这个列表(如要实现拷贝复制,可以写a1 = list1[:])。 对于本题,这样的语法其实产生了两种写法,(见下边小节)。对于本题,两种写法都对,第一种写法比较简洁,但是却改变了原来的l1和l2列表,因为p3指针赋值的时候,直接用了l1或者l2的节点,那么下一次赋值的时候,便改变了这个节点的next指针。第二种写法采用了oj所定义的ListNode类的构造函数,直接用符合要求的l1或者l2的节点的val值创建一个新的node链接在l3后边,所以不改变原先的l1和l2列表。 所以,具体用哪一种,要根据知己需求定。

代码1(python)

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def mergeTwoLists(self, l1, l2):

Read More
 2015-12-09
LeetCode第20/32题:Valid Parentheses和Longest Valid Parentheses 总结

题目一:

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

The brackets must close in the correct order, () and ()[]{} are all valid but (] and ([)] are not.

*大意:给定一个字符串,只包含(){}[]这些字符,判断字符串的括号是否都匹配。

思路

显然是用栈的思想做。

代码

(Python)

class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        l = ['0']
        for ch in s:

Read More
 2015-12-07
LeetCode第19题:Remove Nth Node From End of List总结

题目

Given a linked list, remove the nth node from the end of list and return its head.

For example,

Given linked list: 1->2->3->4->5, and n = 2.

After removing the second node from the end, the linked list becomes 1->2->3->5. Note: Given n will always be valid. Try to do this in one pass.

  • 大意:给定一个链表和一个数n,从一个链表中删去从后变数的第n个节点,比如1->2->3->4->5, n = 2.处理完后为1->2->3->5.。注意给定的n都是有效的,尝试用一遍遍历完成。

思路0

python投机取巧的做法,将链表遍历转为数组,直接删除第-n个元素(注意因为从后数第一个节点index为-1,则后数第n个节点index为-n)

代码:(python)

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x

Read More
 2015-11-27
Galileo开发板+微信公众平台实现简单的物联网家庭监控

上次写的博客,介绍了下刚拿到galileo开发板的时候如何进行折腾。 上次折腾完后,因为我发现galileo本身和一个装着linux的arduino/pc一样,那么用它来实现一些物联网应用会比较简单,又赶上本学期的工程设计课作业,所以初步实现了一个能用微信监测室内温度和拍摄室内照片的小型物联网系统。

参考:

《鼓捣Galileo开发板的一些吐槽》( http://blog.jcix.top/2015-11-04/introduce_galileo/ )

记录下实现过程。由于本人表述能力较差,采用简述加大量外部连接的方式进行记录。

系统功能

  • 用微信获取室内当前温度或者一张较为实时的照片。

  • 通过亮度传感器自动自动控制LED的亮、灭。

基本结构

系统实现最初的想法,就是让微信公众平台和开发板通过互联网直接进行信息传递,但是因为微信公众平台对我们所搭建服务器采用get和post方法进行通信,所以在没有公网ip的校园网环境,一般只能租云服务器或者VPS进行中转。

这样,系统的基本结构就变成了: 开发板外围<-->Galileo开发板<-->云服务器<-->微信公众平台<-->手机微信<-->用户 可见整个通信链将用户和外围器件连接起来,实现了简单的物联网。

Read More
 2015-11-09
LeetCode第42题:Trapping Rain Water总结

题目

Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.

For example, Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6. ![img][img]

  • 大意: 有n个非负整数,代表地势图的高度,如图,计算下雨后这个地形能存多少雨水。

思路

这道题和第10题非常像,分别从最左边和最右边开始,定义两个游标,移动到过程中,记录左边的最大值和右边的最大值,然后用两个最大值中的小值减去地形高度,就是所积的雨水值(类似第10题思路)。

关于两个游标怎么移动的问题,同第10题思路,还是移动当前最大值较小的边,比如:当前右边最大值right_max为10,左边最大值left_max为5,如果移动right_index,那么左边的最大值只能保持不变,不管right_max变不变,两个最大值的较小一个也还会是left_max,没有可能增加积水量,所以可能会存在错误。(详细可结合代码看)

代码

Python

class Solution(object):
    def trap(self, height):
        """
        :type height: List[int]
        :rtype: int


[img]:http://blog2.jcix.top/static/img/2015110901.png

Read More
 2015-11-09
LeetCode第17题:Letter Combinations of a Phone Number总结

题目

Given a digit string, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below.

![img][img]

Input:Digit string 23 Output: [ad, ae, af, bd, be, bf, cd, ce, cf].

Note: Although the above answer is in lexicographical order, your answer could be in any order you want.

  • 大意:给定一个全是数字的字符串,按这个顺序按在手机九宫格键盘上,输出可能组成的字符串的所有情况。

思路

首先,每个按键对应的字母,肯定存在一个表中供后边查询,这里用到了dict的结构存储。 这里的方案是进行循环遍历这个数字字符串,然后对每个数字对应的字母进行遍历,再对现在已经得出的可能遍历,分别追加新的字符。 虽然是三层循环,但是因为中间的一层遍历最多有4个字母,所以复杂度应该为O( n2 )。

代码

Python

class Solution(object):


[img]:http://blog2.jcix.top/static/img/2015110902.png

Read More
 2015-11-09
LeetCode第15,16,18题:3Sum, 3Sum Closest and 4Sum总结

这三道题明显是一家子,放到一起。。。

题目一 3Sum

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.

Note: Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c) The solution set must not contain duplicate triplets.

For example, given array S = {-1 0 1 2 -1 -4}, A solution set is: (-1, 0, 1) (-1, -1, 2)

  • 大意:给定一个有n个整数的数组S,数组中是否存在元素a, b, c使得a + b + c = 0? 找出所有的组合。

题目二 3Sum Closest

Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

For example, given array S = {-1 2 1 -4}, and target = 1. The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).

  • 大意:给定一个有n个整数的数组S和一个给定的目标值tatget,找出数组中三个数a, b, c,使得三个数之和a + b + c最接近target,输出这个和。

Read More
 2015-11-09
LeetCode第14题:Longest Common Prefix总结

题目

Write a function to find the longest common prefix string amongst an array of strings.

  • 大意: 写一个函数,找到一组字符串的公共最长前缀。

思路

我的:定义一个不断更新的变量,存储当前的最长前缀,循环时加以一定的优化,比如如果下一个字符串比当前的前缀还长,那么可以截断前缀后在进行比较。 参考的:这道题在discuss上看到了一些运用了python语法的解法,用到了zip,reduce,set等python特有的语法,顺便贴出。

代码

原创(Python):

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        if len(strs) == 0:
            return ""
        if len(strs) == 1:
            return strs[0]

Read More
 2015-11-09
LeetCode第12,13题:Integer to Roman and Roman to Integer总结

这两道题明显是一对。。。放一起

题目一 Integer to Roman

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

  • 大意: 就是把一个1~3999的阿拉伯数字,变成罗马数字表示。

题目二 Roman to Integer

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

  • 大意: 就是把一个1~3999的罗马数字,表示成阿拉伯数字。

思路

  • 相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
  • 小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
  • 小的数字、(限于 Ⅰ、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
  • 正常使用时、连写的数字重复不得超过三次。(表盘上的四点钟“IIII”例外);
  • 在一个数的上面画一条横线、表示这个数扩大 1000 倍。

参考:

Read More
 2015-12-10
Galileo开发板+opencv+微信公众平台实现简单的物联网家庭监控(2)

紧接上篇文章(《Galileo开发板+微信公众平台实现简单的物联网家庭监控》( http://blog.jcix.top/2015-11-27/galileo_wechat/ ) ),以下功能做了改进:实现了Galileo开发板上用USB摄像头+python版opencv监控并通过微信公众平台进行异常报警的功能。通过connman实现了wifi网络的自动连接和随时修改功能。通过post到服务...

Read More
 2015-12-10
Intel Galileo开发版PCI-e无线网卡wifi配置

由于网上很多配置wifi的方式在我的伽利略开发板上都行不通,最后终于找到这个可以用的“冷门”办法:系统配置开发板: Intel Galileo gen2无线网卡:PCI-e intel wifi link 5100开发板系统: EGLIBC based Linux(download)所用工具硬件:usb无线网卡或者pci-e接口的无线网卡。(注意如果你用的是和我一样的pci-e网卡,注意顺便...

Read More
 2015-11-27
Galileo开发板+微信公众平台实现简单的物联网家庭监控

上次写的博客,介绍了下刚拿到galileo开发板的时候如何进行折腾。上次折腾完后,因为我发现galileo本身和一个装着linux的arduino/pc一样,那么用它来实现一些物联网应用会比较简单,又赶上本学期的工程设计课作业,所以初步实现了一个能用微信监测室内温度和拍摄室内照片的小型物联网系统。参考:《鼓捣Galileo开发板的一些吐槽》( http://blog.jcix.top/201...

Read More
 2015-11-04
鼓捣Galileo开发板的一些吐槽

这几天折腾伽利略开发板,写下一些吐槽,以便以后再看到这篇博客,仍然能记起这些值得吐槽的地方。。。也希望看到这篇博客的人能够因此少些吐槽( ╯□╰ )。。网上其实是有不少资源的,但是相对其他更热门的板子,显然找资料并不是和喝白开水一样简单,由于我表达能力较差,所以准备采用简述+大量站外链接的形式,给出一个希望不会让人误入歧途的引导。。。介绍Intel Galileo(点击查看中文官网),是一个...

Read More
 2014-04-09
只用OS X系统实现A8嵌入式试验箱(linux)的交叉编译

连接以电脑为终端,采用基于PL2302芯片的串口转USB线链接电脑和试验箱,MAC OS X系统需要安装芯片的驱动(文件名md_PL2303_MacOSX10_6_dmg_v1_4_0.zip)通过文件内说明文档进行相关设置,然后可以连接成功。Mac终端下用screen命令实现试验箱终端功能.screen /dev/tty.usbserial 115200>注意拔下USB时要用A(ct...

Read More
 2016-11-12
两台服务器间SSH或SCP实现无密码登录或文件传输

最近由于需要实现从一个客户端电脑定时远程上传图片到阿里云服务器的功能,需要实现SCP的免密码传输。所以查资料并做了一个记录,希望对大家有帮助。步骤1.Client上某用户执行ssh-keygen命令,生成建立安全信任关系的证书ssh-keygen -b 1024 -t rsa这里如果~/.ssh/id_rsa.pub 已经存在,说明以前已经生成过,可以直接跳过这步。2.将公钥证书id_rsa...

Read More
 2017-07-25
Steam是如何吸走我们的钱的(三)----从红警2说起

第一篇和第二篇文章中,我们分别从差异化定价和虚拟交易两个方面揭露了一下Steam的坑钱大法。今天要讲一下游戏内容了,毕竟人们来Steam主要是想玩游戏的。任何一款游戏发售之前,开发商都应该是设定好了游戏道具、游戏方式、各种参数等一切正常游戏进行需要的游戏内容。但是随着游戏时间加长,总有一天,游戏内容被玩家慢慢“消费”完,如果能减慢游戏内容的消耗时间,就能延长一款游戏的寿命,使游戏获得更多人认...

Read More
 2017-06-29
Steam是如何吸走我们的钱的(二)

上次提到了Steam通过差异化的游戏定价和频繁的打折活动,力图让最多的人以自己能接受的最高价格买走一个游戏,以此来走了最多的钱。本节我们将继续说一下集换式卡牌和社区市场这两种吸钱大法。集换式卡牌摘自百度百科集换式卡牌游戏,简称CCG(Collectible card game)或TCG(Trading card game)。顾名思义,此类游戏是以收集卡牌为基础的,游戏者需要通过购买随机包装的...

Read More
 2017-06-28
Steam是如何吸走我们的钱的(一)

首先,我认为这个问题应该从商业运营或经济学的角度来更加专业地解释,但作为一个资深的、从小就被各种电脑游戏坑钱的低端手残玩家,我还是要揭漏出steam的部分坑钱之道,以方便我们更好地被坑。非常希望各位有兴趣和相关专业的同学来和我讨论啊~什么是Steam摘自百度百科:Steam平台是Valve公司聘请BitTorrent(BT下载)发明者布拉姆·科恩亲自开发设计的游戏平台。Steam平台目前是一...

Read More
 2016-12-14
推荐一些简洁好用的Chrome插件

最近在实验室学习,chrome竟然称为了我使用的主要工具,不论是看博客或是看一些文档、论坛都离不开浏览器。chrome浏览器非常好用,通过登录google账号,可以同步设置、书签甚至插件。这里推荐几个我用的Chrome插件,能提高工作效率,大家根据名字都能搜到。Octotree可以在显示github网页左侧显示类似工程目录的侧边栏。OneTab可以一键将暂时没看完的标签收集起来,有时间(内存...

Read More
 2015-10-24
运用jekyll+Nginx+docker搭建博客的总结

博客由来今年暑假的时候就听说github上可以免费搭建静态博客。当时虽然看了看,但还是因为服务器、网页等知识欠缺太多,几次想动手都没有坚持下去。最近看了看Nginx的有关知识,算是对http服务器的搭建有了个大概了解。后来看到了docker,就买了《第一本docker书》这本书看了看,发现上边有些例子写的挺不错,其中就有jekyll+Apache搭建静态博客的例子,照着做一遍后,我决定用Ng...

Read More
 2015-10-08
折腾Docker的一些吐槽点

第一次构建Docker镜像,想照着书弄个jekyll的镜像玩玩,结果两天了,到现在还没成功。记录下国内环境实践和书本上的不同。。。首先官方的apt-get源太慢了要换成国内的速度还可以接受一点:(原文链接)做法:Dockerfile 中 RUN apt-get update 前添加一句:RUN sed -i 's/http:\/\/archive\.ubuntu\.com\/ubun...

Read More
 2015-11-09
LeetCode第14题:Longest Common Prefix总结

题目Write a function to find the longest common prefix string amongst an array of strings.大意: 写一个函数,找到一组字符串的公共最长前缀。思路我的:定义一个不断更新的变量,存储当前的最长前缀,循环时加以一定的优化,比如如果下一个字符串比当前的前缀还长,那么可以截断前缀后在进行比较。参考的:这道题在disc...

Read More
 2015-11-01
LeetCode第8题:String to Integer (atoi)总结

题目:Implement atoi to convert a string to an integer.大意:就是手动实现C语言里常用的atoi函数。。。思路和吐槽:我最讨厌这种了,完全的信息不对称。。要讨论的情况只有不断提交才知道出题人什么意思,我怎么知道你要求的是什么,况且这是算法题又不是工程题。。。。幸亏这道题比较简单,多试几次也不太费时。代码Pythonclass Solution(...

Read More
 2017-03-30
在awk中如何使用或赋值shell的变量

写shell脚本处理文本的时候,经常用到awk来配合shell命令。但是awk的大括号中和shell貌似是两个世界。本文只介绍最容易理解的方法(作者水平有限,复杂的以后可能补充),来实现awk对shell变量的使用和更改。如果我们将awk看成变成语言中的函数,或者一个封装,那么要使用或者修改外部的变量,其实就是输入参数和输出返回值的问题。对于使用shell变量,其实就是shell变量怎么作为...

Read More
 2016-11-16
Shell脚本中进行多行注释的方法

我发现。。shell脚本貌似不像C或者Python一样自带注释语法,不过拐弯抹角还是有一些方法的。。囧方法1:利用逻辑语句利用了逻辑语句的执行顺序,缺点是注释中不能出现括号,否则会报错!###逻辑或前如果为真,后边的语句块自动不执行#1:||{ 注释内容...}#2((1))||{ 注释内容...}#3true||{ 注释内容...}###逻辑与前如果为假,后边的语句块自动不执行#4((0)...

Read More
 2016-04-02
Jc的sed简单入门/sed命令总结

这是我学习sed的一个总结,只限于自己和比我水平低(就是没接触过)的同学看。。。除了参考资料,讲解也包括很大成分的个人理解,如果发现错误,希望大家可以提醒我及时更正,谢谢~!sed概述sed是一个流编辑器,更准确的说是一个行编辑器,就是sed处理文本处理命令用于逐行处理文本中的文字。这是sed命令的格式: sed [options] [commands] [input-file]就是说sed...

Read More
 2016-03-29
Jc的常用Git命令记录

常用git,做个记录,方便查询,利人利己,如有错误,欢迎指正~创建仓库git init 创建仓库git clone xxx.git(远程库的地址) 克隆一个远程仓库git remote add origin xxx.git(远程库的地址) 指定一个远程仓库地址,命名为origin提交更改git rm file_name 删除文件git add file_name 添加文件到仓库暂存区(in...

Read More
 2017-04-06
OVERCOMMITTING WITH KVM 翻译:KVM虚拟机对硬件资源的超量分配

译者的废话这是Red Hat RHEL 7文档中关于KVM虚拟机超量分配的说明文档,这里说的KVM,应该就是适用QEMU管理的KVM虚拟机的,因为在启动QEMU虚拟机的时候,只要-smp N和-m N参数分别就可以指定虚拟机的vCPU数和内存数,我实际实验发现,它们是都可以超过实际的物理CPU核数和内存大小的。硬件资源超量分配,说的好听是节约资源,但是资源的分配超的不切实际,也就是VPS超售...

Read More
 2016-12-30
Qemu KVM 虚拟机通过虚拟网桥实现桥接和NAT的实验

系统概况:host 和 guest 都是用的 Ubuntu Server 16.04系统。我的 host 机上有三块网卡2块有线网卡(接口 enp1s0 和 enp3s0)和1个无线网卡(接口 wls2s0)。我的 host 机通过无线网卡连在一个路由器上,并因此能够连接到互联网,所在的网段是192.168.3.0\24,ip 固定为192.168.3.5。其他两块有线网卡没有连接。实验0:...

Read More
 2016-11-02
qemu/qemu-kvm/qemu-system-x86_64/qemu-x86_64命令的区别?

刚想玩玩kvm,结果分不清这几个命令。。搜了一下,记录下来,希望对大家有帮助。摘抄1在老版本中有单独的qemu-kvm模块存在,结合qemu一起做虚拟机工作。在后续新版本中,已经将qemu-kvm模块完全合并到qemu中去。因此当需要使用kvm特性时候,只需要qemu-system-x86_64 启动命令中增加参数 --enable-kvm参数使能即可。(http://blog.csdn.n...

Read More
 2017-04-16
MySQL InnoDB透明页压缩的简单分析

从MySQL 5.7版本开始,MySQL不仅支持原有的压缩表格式(Table Compression),还支持一种称为透明页压缩的特性(Transparent Page Compression)。通过阅资料和源码,我对这个特性有了一定的了解。以下我将从它的使用方法、实现原理等方面对它进行简单分析,并同压缩表格式进行一些对比。1. 开启方法官方文档对于透明页压缩的特性的说明仅仅一页,主要说明了...

Read More
 2017-03-16
Optimizing InnoDB Disk I/O MySQL文档翻译:优化InnoDB磁盘I/O

原文:8.5.8 Optimizing InnoDB Disk I/O这页感觉比较重要,翻译一下。。如果你遵循了数据库设计和SQL操作调优的最佳实践,但是数据库仍然由于磁盘I/O负载过重而运行慢,请考虑这些磁盘I/O优化方法。如果Unix top工具或Windows任务管理器显示你的工作负载的CPU使用率百分比小于70%,那么你的数据库系统瓶颈在于磁盘。增加缓冲池(buffer pool)的...

Read More
 2017-03-16
Optimizing Disk I/O MySQL文档翻译:优化磁盘I/O

原文: MySQL 5.7 Reference Manual — 9.12.2 Optimizing Disk I/O本节将介绍当你决定更多更快的存储硬件设备投入到数据库服务器时,应该如何配置它们。 软件配置上优化InnoDB以提高I / O性能的信息,请参见第9.5.8节“优化InnoDB磁盘I/O”。磁盘寻道是一个巨大的性能瓶颈,当数据量剧增到使得缓存命中率减小时,这个问题会更为明显。对...

Read More
 2017-05-07
FAST 16论文sRoute:treating the Storage Stack Like a Network学习记录

论文原文PDF: sRoute: treating the Storage Stack Like a Network出处:USENIX FAST 161. 概述数据中心中,数据从一个应用最终到达存储服务器不仅要经过网络,还要经过很多的存储层次,这些层次可以称为存储栈(Storage stack)。对于数据中心中一个较为复杂的应用,一个IO请求甚至要经过应用缓存层、虚拟机操作系统(Guest ...

Read More