分类目录归档:Algorithm

2022再见,你好2023

2020到2022真的发生太多事情了!疫情的三年,各种神奇的事情,各种经历,核酸,封控,小阳人,然后阳康。

回顾一下2022这一年

1月

再逛古北水镇,南山重拾滑雪,做蛋糕,逛首钢园

2月

逛西单,过年,去狗咖,玩夜场的持斧奥夫,吃巨贵的板前十胜过生日

3月

摘草莓,开始玩艾尔登法环

4月

玉渊潭看樱花,看了几个公寓

5月

去农家乐,京东大峡谷,平谷金海湖

6月

封控在家!

7月

去环球影城,多布营地

8月

回常德新家住新房!长沙喝茶颜悦色,带实习生,玩飞盘,逛植物园

9月

爬植物园后山,去水立方玩水,恢复锻炼,换新手机

10月

逛蓝色港湾,多布营地冻死人,海洋馆,北平制冰厂,又一个人去环球影城刷霸天虎

11月

唯一的出差,上海之行,淀山湖,然后好不容易费尽周折回来小区又封控!!!

12月

阳了在家,然后好了就出去玩,看房子,逛三星堆,金沙遗址,看脱口秀

然后到今天1月1号飞机回京,到爸妈那吃了晚饭。

总的来说,2022年一整年基本都在北京,除了回了趟常德,成都,出差上海。但好的是疫情终于结束,一切尘埃落定,2023年又可以到处跑了!

看了下2022年的flag,新疆三亚就放在2023吧,爸妈出去玩的事也安排下云南,西安,锻炼还需要继续恢复,自己的话,就继续搞定那个大件!

还有什么愿望的话,就是大家都健健康康,世界和平,这样才能周游世界哇!

2023,继续加油!L6噢!

2022来了!

今年的年度总结比以往要来的早一些啊~主要原因是晚上即将在剧本杀中跨年度过,所以趁着早上美好的时光,赶紧来写写吧!

想想去年还去了广州跨年,今年因为疫情哪也去不了呢,希望2022真的能好起来!

1978-2000-2022

又是一个22年,还记得2000的时候,我爸跟我说,这是一个新的千年了呢。

照例来回顾一下我的2011(大误,是2021!!!)

1月

广州长隆,动物真的是不错的。不过北京南边那个野生动物园也还不错~

工作原因去了趟桂林,想想那个象鼻山,小得就是人家一普通公园的景色!

看五福玲珑居

2月

和老爸老妈回了常德,好像是第一和老妈单独回家,路过长沙火车站的时候还挺感慨的。好多年,都是这样常德-长沙-北京 来来回回

看了新家装修成果,一起喝了茶颜悦色

然后又回北京,去了北海公园,第一次去献血,学习玩“卡坦岛”

3月

参观成都相亲角,去茶馆喝茶

学习玩只言片语,然后是一小只的生日

4月

带着爸妈一起去成都重庆的9日之旅,非常开心

看大熊猫,看大佛,吃了好多好吃的,赞不绝口!哈哈哈

5月

第一次去西藏,拉萨,纳木措真漂亮

还有一件大事是喜提大白,期待了好久的特斯拉Model Y

然后开了2200公里的长途,第一次,很精彩

6月

带姐姐去学习攀岩,想想现在已经可以登顶了,溜冰也会了,真是不错

去了峨眉山,猴子真的挺猛的

然后UME Play是真的精彩!

7月

跟团队去了厦门,鼓浪屿

去爬青城山

然后沿途又开回北京,途径西安,黄河,山西,保定

8月

和组里的人一起组乐队,表演

又开始做饭

9月

安吉工作之旅

石景山游乐园晚上还挺不错的

10月

重游北京的一些景点

去了北京大兴野生动物园

天津之行,还有小镇

快闪上海,二刷三刷迪士尼!

11月

去做蛋糕,一起吃火锅,王者荣耀比赛

12月

环球影城我终于来啦,时隔两年再滑雪

南山滑雪场,矾根民宿都不错,mark!

古北水镇,然后年底KTV居然又喝大了!

回顾看起来,这一年还是做了很多事情的,最最重要的是很多事情都尘埃落定,慢慢又找回了自己,找回了内心的安定和希望有一天能真正的又从心底里开开心心起来!

这一年还玩了好多好多个剧本杀和密室,还通关了几个游戏,也算是小小的成就吧,体验了不一样的东西。

最后趁着这温暖的阳光,给2022留几个flag吧

1、去新疆、三亚

2、带爸妈再出去玩1-2次

3、搞定那个大件!

4、恢复一些锻炼吧!

元旦快乐!!!!

最近的事

厦门佛事用品展

故宫博物院

准备去美国

好多好多事

做都做不完的事

希望越来越好

ps:ipad pro的键盘和鼠标都挺好用的

坐等今天晚上的新mac

算法学习(4)

近期刷题小结:

Palindrome Number

之前的方法主要是转成字符串,或者是翻转数字之后比较。但是题目要求不能使用额外的空间,所以需要直接取出数字的首末位比较。先求得数字的位数,然后用(x % 10) != (x / (int) (Math.pow(10, len – 1))) 比较头尾,每次比较完之后会掐头去尾得到一个新的数,依次可求是否为回文数。

Regular Expression Matching

模式匹配还是需要用到递归的,看起来也比较清楚。每次获取两个字符串的首位,然后主要有两种情况:1、单个字符,且后续没有*号,直接比较,然后比较各自-1的子串;2、后续有*号,这种情况相对复杂,又分成三种可能,最常见的是aaa和a*这样,a*匹配所有的a;一种是像aaa和aa*a这种,可能a*只匹配1个a;另外一种是像aa和c*a*,c*根本不匹配。

Container With Most Water

暴力算法就是循环两遍,找到所有的组合比较,效率较低

可以分析得出,如果从两端开始计算,依次缩小范围,只有可能中间的两块板特别高,才有可能比摊平的要大。所以依次取left和right计算area,然后将较小的抛弃,计算内部的可能area。

Integer to Roman

Roman to Integer

这两个的思想都是先定义了对应关系:

int[] nums = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 };
String[] romans = { “I”, “IV”, “V”, “IX”, “X”, “XL”, “L”, “XC”, “C”, “CD”, “D”, “CM”, “M” };

然后使用累加的思想,每次累加依次,就输出一个罗马数字,这也是罗马数字本身的思想。比如III是3个1累加和VI是5加1

反过来也是,依次从最大的开始匹配字符串,然后累加,比如DCXXI,依次匹配D,C,X,X,I,因为不存在DC或者XI这样的组合

注意都是要从最大的数开始累加

Longest Common Prefix

这个的思想比较直接,时间复杂度是O(nm),n个字符串,m是最长前缀子串的长度。

依次取出第i个字符,看是不是每个字符串都包括,如果包括就加入common prefix

 

 

算法学习(3)

继续刷题

atoi函数的实现,需要注意的问题:

The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, starting from this character, takes an optional initial plus or minus sign followed by as many numerical digits as possible, and interprets them as a numerical value.

The string can contain additional characters after those that form the integral number, which are ignored and have no effect on the behavior of this function.

If the first sequence of non-whitespace characters in str is not a valid integral number, or if no such sequence exists because either str is empty or it contains only whitespace characters, no conversion is performed.

If no valid conversion could be performed, a zero value is returned. If the correct value is out of the range of representable values, INT_MAX (2147483647) or INT_MIN (-2147483648) is returned.

1.从第一个不是空格的开始转换

2.如果空串,或者全是空格,或者没有符号+数字这种组合出现,返回0

3.注意正负和int越界的问题

4.连续符号出现返回0

5.转换过程中如果遇到其他非数字字符,停止转换,返回现有值

算法学习(2)

继续在Coursera上复习算法

包括

Union-Find:快速查找,快速连接,找到最顶端父节点连接

元素排序算法:选择排序(每次交换较小的到首位),插入排序(插入到已排序的数组),希尔排序(间隔13-4-1插入排序),乱序方法(O(n)时间复杂度的随机序方法)

随机散点的凸多边形问题,Y坐标排序,遍历取角度,判断是否逆时针

待学习:

堆栈,变长数组,队列

 

leetcode方面

最长回文子序列:反向字符串求最长子串,哨兵和反射结构

Add Two Numbers:链表反序存储和进位

ZigZag Conversion:数学问题,找位移规律

Reverse Integer:反向没有0开头,注意负数情况

 

算法学习第一篇

重新开始学习算法

Coursera在线课程,普林斯顿的算法一、二

教材是《Algorithm》

练习题主要是leetcode.com上的OJ里面题,一个一个开始刷吧

全Java实现

今天主要是复习快排,二分,集合操作,求两数和的位置,两有序数组的第K大数,最长无重复连续子串