A sentence A picture A day!

Leetcode-atoi&rev Words

String to Integer

注意的几点:

* 字符串为空
* 全是空格
* 字符串前的空格要忽略掉
* 对‘+’和‘-’的处理
* 遇到非数字的字符就返回当前值而不是返回0
* int的范围  -2147483648~2147483647

【判断与int最值比较时记得*signal】

又用Python写了一遍,遇到的小问题:

* 空字符串str==''
* elif
* 判断条件中要加入i<len(str)
* 需要用ord()将字符转换成ASCII码

Reverse words in a string

第一个想法是,用空格将句子分割,再将单词组合 第二个想法,之前看过类似的,翻转整个句子,再翻转每个单词(同一个函数) 一开始按照第二种想法写了一下发现翻转之后的实现方法由于有连续空格与一类似,还多了翻转,索性直接用第一种:(

//注意要剔除收尾空格,将连续空格转为一个空格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void reverseWords(string &s) {
    if(s=="")return;
    
    stringstream ss(s);// Insert the string into a stream
    stack<string> tokens;// hold words
    string buf;//buffer string
    s="";
    while(ss>>buf)
      tokens.push(buf);
    
    while(!tokens.empty())
    {
        buf=tokens.top();
        s=s+buf;
        if(tokens.size()>1)s=s+' ';
        tokens.pop();
    }
}

用的数据结构为栈stack,要是用vector注意push_back(),pop_back(),buf=tokens[tokens.size()-1] vector没有top方法 然后用Python做了一下,一条语句就能搞定。。。。

1
2
def reverseWords(self, s):
    return ' '.join(s.split()[::-1])

顺便小结一下和字符串有关的操作:

去掉两边的空格及指定符号

s.strip()
s.lstrip()//去掉字符串左边开始的空格
s.rstrip(',')//去掉字符串右边的连续逗号

#strcpy(s1,s2) 复制

s2=s1

#strcat(s1,s2) 连接

s1+=s2
连接数组中多个字符串:separator.join(strlist)  其中separator=','  strlist=['apple','pie','cake']

查找单个字符

#strchr(s1,c)
position=s1.index(c)

#strstr(s1,s2)查找字符串

index=s1.find(s2)//返回位置,如没有返回-1

#strcmp

cmp(s1,s2)

#strlen(s)

len(s)

s1=s1.upper()

s2=s2.lower()

#strrev(s) 翻转字符串

s=s[::-1]

s.split(‘,’)

Leetcode-merge

leetcode里四道与merge有关的题~

Merge Sorted Array

思路:从结尾开始合并,在数组A中从m+n-1 记得简化A[i]=A[ka];ka— ==> A[i]=A[ka—] 习惯养成

Merge Two Sorted Lists

先用循环写了一遍:头指针指向二者较小的,合并,尾部连接 写的很啰嗦,用递归又写了一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ListNode *mergeTwoLists(ListNode *l1, ListNode *l2)
{
  if(l1==NULL)return l2;
  if(l2==NULL)return l1;
  
  ListNode *rHead=NULL;
  if(l1->val<l2->val)
  {
      rHead=l1;
      rHead->next=mergeTwoLists(l1->next,l2);
  }
  else
  {
      rHead=l2;
      rHead->next=mergeTwoLists(l1,l2->next);
  }
  
  return rHead;
}

有个不好的习惯声明的指针变量总是忘记 =NULL

Merge k Sorted Lists

使用循环不断两两合并

1
2
3
4
5
6
7
8
9
10
11
12
ListNode *mergeKLists(vector<ListNode *> &lists) {
    if(lists.size()<=0) return NULL;
    int i;
    ListNode *l=lists[0];
    for(i=1;i<lists.size();i++)
    {
        l=mergeTwoLists(l,lists[i]);
    }
    
    return l;
    
} 

超时 不断的两两合并

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ListNode *mergeKLists(vector<ListNode *> &lists) {
    if(lists.size()<=0) return NULL;
    int size=lists.size(),half,i;
    ListNode *l=lists[0];
    while(size>1)
    {
        half=(size+1)/2;
        for(i=0;i+half<size;i++)
        {
            lists[i]=mergeTwoLists(lists[i],lists[i+half]);
        }
        size=half;
    }
    return lists[0];
    
}

鸡血文

清早,看了一篇文章,让昨天有点down的心情好了很多,将部分文章进行翻译分享一下。 文章链接 A Guide for Young People: What to Do With Your Life

学会接受不适

你能锻炼的最重要的技能之一就是接受不适。最好的事情通常都是困难的,如果你逃避困难和不适,你将错过这些美好的事情。 学习、写作、婚姻、马拉松,这些都是不简单的,但是他们都是能给人们打来成就感的。 当你发现自己在逃避不适感时,推动自己一下

学会接受不确定

克服分心与拖延

你能抓住机会是因为你能够面对不确定性与不适感,但是如果你花时间在社交媒体和看电视上将能难成功。 分心与拖延是逃避困难和不适的表现。如果你能很好的接受困难这才是你能有别于其他人。

了解你的思维的运作方式

写博客。你将被迫记录你生活中发生了什么,你学习了什么。这是自我成长的好工具,我推荐给每一给年轻的朋友。

小事积累

从小事做起,如果可能每天都积累,它会随着时间不断增值。

变得值得信赖

每一个任务做到最好,坦率,承认错误改正错误,deadline

You can start today, and see what life has to offer you.


写这篇文章是因为里面的几个点很触动我:1.迎接不适感与不确定性 2.写博客 3.每一件事情做到最好

我想这是因为之前的生活顺利,让我这个人缺失了对生活某些方面的理解。这一段的生活在提醒我人不能总生活在舒适区,这样你就是一个生活在脆弱区的人,一旦某天生活面临一个改变,将无所适从。 生活之所以有趣有意义,就是因为它能够充满挑战与不确定性,最有意思的地方就是你迎接未知,收获惊喜。我放弃过学习弹琴,放弃过200米,放弃过当一名幼师,放弃过努力选择一个好的lab和intern,曾经的那些非常合理的理由已经没有了意义,如今后悔,所以我知道坚持的意义。

坚持写博客真的不是容易的事,主要是每天忙到11点多的时候,总是想离开实验室早点休息准备迎接明天,或许是由于生活中自己认为有意义的事太少。change it。

关于每件事做到最好,是因为最近一个工作中一个简单的报告。再简单,minjun依然能谈到排版,字多图少,以及SQL语句结果中应排查的问题。我觉得哪怕一件再小的事也应该完美点。

HAVE A NICE DAY!

Markdown小结

对自己常用的进行一个小结,希望能更好的用它来writing。 小结了第一版之后发现还是翻译官方文档吧。。。markdown

网页版markdown

标题

#H1

##H2

###H3

H1 =====

H2 ——–

强调

斜体 : *星号* 或者 _下划线_
加粗:**星号\**   __下划线__
斜体和加粗: **__**
划去:~~划去~~

区块引用

使用>在每行的最前面 表示区块 使用>>进行嵌套

列表

无序列表使用 * 或 — 或 +。 有序列表 数字接英文句点 空格:

代码

注意“` 与 “`第一个之后要换行在写代码,否则在rake generate时会报错in `rescue in pygments’: Pygments can’t parse unknown language: def. (RuntimeError)

链接

[text](url “title”) title可省 参考式的[google] 后接[google]:http://www.google.com/ 参考式的[google][1] 后接[1]:http://www.google.com/

图片

  1. ![Alt text](/images/img.jpg “title”)
  2. 我自己常用的是 <img src=“/images/0311.jpg” width=“200” height=“200” />

Protocol

[TOC]

回归写作第一篇 关于协议

层模型 因特网协议栈五层模型:应用层、传输层、网络层、链路层、物理层

OSI 七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

每一层都有各自的协议

物理层

电脑组网:光纤、电缆、双绞线、无线电波;传输0、1电信号

链路层

以太网Ethernet 一组电信号构成一个“帧” Head:18字节 Data:46~1500字节

MAC地址 以太网规定,入网的设备必须有“网卡”接口。MAC地址—网卡的地址,独一无二,12个十六进制数表示 以太网中数据包的送达:向本网络中所有的计算机发送,让每台计算机自己判断,是否自己是接受者,与自身MAC地址相同就接收不同就丢弃。

网络层

如果两个计算机不在同一个网络,广播无法到达。 网络是由无数子网络共同组成的。 需要一种方法判断MAC地址是否同一子网。同一子网时采用广播方式发送,否则路由查询。 网络层—-计算机是否属于同一子网络。网络地址由管理员分配。网络地址确定计算机所在的子网络,MAC地址将数据包送到该子网络中得目标网卡。

IP协议 “子网掩码”—判断ip地址是否在同一个网络:将两个IP地址分别与子网掩码进行与运算AND,如果结果相同说明在同一子网。

IP数据包 整个IP数据包总长度最大为65535字节,若数据包大于1500字节,需分割成几个以太网数据包分开发送

ARP协议(得到同一子网的主机MAC地址) 一般情况是IP地址已知,但对方的MAC地址未知 从IP地址得到MAC地址: – 两台主机不在同一子网——让网关处理(需要网关的MAC地址,对方的IP地址)

-两台主机在同一子网—-通过ARP协议得到对方MAC地址:ARP协议:发出一个数据包,含被查询主机的IP地址,对方MAC地址一栏填FF:FF:FF:FF:FF:FF 收到这个包的主机会取出IP地址与自己的比较。

传输层

传来的数据包是哪个程序(进程)使用—-需要“端口”【每一个使用网卡程序的编号】 端口号为0~65535,其中0~1023被系统占用。

传输层:端口到端口 网络层:主机到主机 Unix系统把主机+端口叫“套接字”socket

UDP:简单易实现 可靠性差 TCP:有确认机制的UDP

应用层

规定数据格式

上网


静态地址 本机IP、子网掩码、网关IP、DNS的IP 动态地址 DHCP协议【应用层协议,建立在UDP协议上】 每个子网中有一台计算机负责管理本网络中所有IP地址 “DHCP服务器”

OctopressTips

很久没用Octopress写作了,原本熟悉的命令记不清:(

回归“像黑客一样写作”的战地

创建文章

进入octopress文件夹

1
2
cd octopress
rake new_post["My bolg"]

如果执行后遇到“rake aborted! You have already activated rake 10.1.1, but your Gemfile requires rake 0.9.6. Using bundle exec may solve this.”这样的问题,是因为你安装的版本和octopress所用的不符。 * 你可以按照提示在命令钱直接加bundle exec * 如果不想每次都多敲,就更改一下Gemfile的内容吧:我是把 gem ‘rake’, ‘~> 0.9’ 改成了’10.0’ 此时进入source目录下的_posts文件夹会生成新建的文章,使用文本编辑器打开进行内容的修改

文章写完后(有中文需要保存成UTF-8格式)

保存文件生成预览

1
2
rake generate
rake preview

浏览器中输入http://localhost:4000/ 可查看预览

//创建一个新的页面也与此类似 rake new_page[yummy]

部署到Github上去

1
rake deploy

一些关于octopress的设置可以修改 _config.yml文件内容

推荐一个编辑的网站 https://stackedit.io/ 个人很喜欢

0317

今天开始了对HumansofNewYork的整理工作 希望能从中找到自己感兴趣的东西 总结了15张图片~真是个费时的活儿~不过乐在其中

整理的最喜欢的一句话是My cab driver and i missed a turn yesterday because we were swapping pictures of our cats

记一句话以让自己踏实:你一直很优秀,只是别让这个世界浮躁了你.自己翻译一下^^: You’ve always been excellent, but just do not let the world make you fickle.

0312

关于const的小结—-对const总是用的不好,来个小结 常引用 不对实参更改

void disploy(const double &r)

常对象 需进行初始化 不能被更新 用于调用常成员函数

A const a(3,4)

开始我的R语言~~ 安装一个包

install.packages(“vcd”)//联网~~ 下载的二进制程序包在

/var/folders/_h/r8xs1s7111z5dkhm642q83lr0000gn/T//RtmpHE30oP/downloaded_packages里

help(package=“vcd”) library(vcd)//加载包!!否则报警告信息没有数据集

0311

A fix

执行git push 警告warning: push.default is unset; its implicit value is changing in Git 2.0 from ‘matching’ to ‘simple’.

$ git —version git version 1.8.3.4 (Apple Git-47)

push.default,可以设置为nothing, matching, upstream, simple, current这些值。推荐git config —global push.default simple

MY drawing ^ – ^

0310

Talk with a school mate

To summarize the occupation plan of the data analysis

To get more information

I hope to use my model or code one day into practical business—FALL TO THE GROUND^—^