ARTS 2019 05 05 (29)

68 篇文章 0 订阅
49 篇文章 0 订阅

ARTS
Algorithm:每周至少做一个leetcode的算法题;
Review:阅读并点评至少一篇英文技术文章;
Tip/Tech:学习至少一个技术技巧;
Share:分享一篇有观点和思考的技术文章;

Algorithm

438 找到字符串中所有字母异位词

https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/
在这里插入图片描述
其实这种题目就是滑动窗口,和哈希思想。针对这种题目用到的技巧的就是双端队列(链表)和字母数组。
具体 的步骤我写在代码的注释里了,我们来看看代码:

class Solution {
    public List<Integer> findAnagrams(String s, String p) {
        int[] charNumArray1 = new int[26];
        int[] charNumArray2 = new int[26];
        ArrayList<Integer> res =new ArrayList<>();
        LinkedList<Character> list2 = new LinkedList<Character>();
       	// 先确定p中的字母的数量
        for (int i = 0, len = p.length(); i < len; ++i) {
            charNumArray1[p.charAt(i) - 'a']++;
        }
        int start = 0;
        char[] charArray = s.toCharArray();
        // 遍历s字符数组
        for (int i = 0, len = charArray.length; i < len; ++i) {
            list2.add(charArray[i]);
            // 更新第二个存储字符数据的数组的数据。
            charNumArray2[charArray[i] - 'a']++;
            // 保证队列中的元素的数量是和p相同。同时保证‘存储字符数据的数组’数据正确。
            if (list2.size() > p.length()) {
                char charTemp = list2.removeFirst();
                charNumArray2[charTemp - 'a']--;
                start++;
            }
            // 比较数量和对应的字母数量是否相同
            if (list2.size() == p.length()) {
                if (isInclude(charNumArray2, charNumArray1)) res.add(start);
            }
        }
        return res;
    }
    public boolean isInclude(int[] charNumArrayS, int[] charNumArrayT) {
        for (int i = 0, len = charNumArrayT.length; i < len; ++i) {
            if (charNumArrayS[i] != charNumArrayT[i])  return false;
        }
        return true;
    }
}

Review

Let’s code a TCP/IP stack, 5: TCP Retransmission

http://www.saminiir.com/lets-code-tcp-ip-stack-5-tcp-retransmission/

  • Automatic Repeat Request
  • TCP Retransmission
  • Karn’s Algorithm
  • Managing the RTO timer
  • Requesting retransmission
  • Trying it out
  • Conclusion
  • Sources

讨论了TCP的重传机制。涉及一些时间控制器,以及重传一些算法等等。

Tip/Tech

分桶法来进行对不同的数组信息进行分类,我感觉这个很适合在答案需要由大到小的情况下,各种的分类的情况进行讨论。
顺便了解了一下桶排序的思想。

Share

寒窑赋

人生在世,富贵不可尽用,贫贱不可自欺

寒窑赋 (全文)
天有不测风云,人有旦夕祸福。蜈蚣百足,行不及蛇;雄鸡两翼,飞不过鸦。马有千里之程,无骑不能自往;人有冲天之志,非运不能自通。
盖闻:人生在世,富贵不能淫,贫贱不能移。文章盖世,孔子厄于陈邦;武略超群,太公钓于渭水。颜渊命短,殊非凶恶之徒;盗跖年长,岂是善良之辈。尧帝明圣,却生不肖之儿;瞽叟愚顽,反生大孝之子。张良原是布衣,萧何称谓县吏。晏子身无五尺,封作齐国宰相;孔明卧居草庐,能作蜀汉军师。楚霸虽雄,败于乌江自刎;汉王虽弱,竟有万里江山。李广有射虎之威,到老无封;冯唐有乘龙之才,一生不遇。韩信未遇之时,无一日三餐,及至遇行,腰悬三尺玉印,一旦时衰,死于阴人之手。
有先贫而后富,有老壮而少衰。满腹文章,白发竟然不中;才疏学浅,少年及第登科。深院宫娥,运退反为妓妾;风流妓女,时来配作夫人。
青春美女,却招愚蠢之夫;俊秀郎君,反配粗丑之妇。蛟龙未遇,潜水于鱼鳖之间;君子失时,拱手于小人之下。衣服虽破,常存仪礼之容;面带忧愁,每抱怀安之量。时遭不遇,只宜安贫守份;心若不欺,必然扬眉吐气。初贫君子,天然骨骼生成;乍富小人,不脱贫寒肌体。
天不得时,日月无光;地不得时,草木不生;水不得时,风浪不平;人不得时,利运不通。注福注禄,命里已安排定,富贵谁不欲?人若不依根基八字,岂能为卿为相?
吾昔寓居洛阳,朝求僧餐,暮宿破窖,思衣不可遮其体,思食不可济其饥,上人憎,下人厌,人道我贱,非我不弃也。今居朝堂,官至极品,位置三公,身虽鞠躬于一人之下,而列职于千万人之上,有挞百僚之杖,有斩鄙吝之剑,思衣而有罗锦千箱,思食而有珍馐百味,出则壮士执鞭,入则佳人捧觞,上人宠,下人拥。人道我贵,非我之能也,此乃时也、运也、命也。
嗟呼!人生在世,富贵不可尽用,贫贱不可自欺,听由天地循环,周而复始焉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值